Dynamic document context mark-up technique implemented over a computer network

ABSTRACT

Various techniques are disclosed for delivering contextually related advertising content to end users of a computer network. Advertiser campaign information may be accessed. In at least one embodiment, the campaign information may include a first plurality of keywords provided by an entity other than the end user of a client system. A first document associated with a first uniform resource locator (URL) may be identified. In at least one embodiment, the first document may include a first portion of original content to be displayed on the client system. Using the campaign information, specific original content of the first portion of original content may be selected to be converted to a first hyperlink having a second uniform resource locator (URL) associated therewith. In at least one embodiment, the specific original content includes a first text string matching at least one keyword from the campaign information. Markup operations may be performed on a first portion of specific original content. In at least one embodiment, the markup operations include converting the first portion of specific original content into a first hyperlink to the second URL, wherein the first hyperlink includes a first portion of marked up content. The first hyperlink may be displayed at the client system. In at least one embodiment, the display of the first hyperlink includes display of the first portion of marked up content. In at least one embodiment, when an event is detected relating to a location of a cursor at the client system being positioned over a portion of the displayed first hyperlink, a first overlay advertising impression may be automatically displayed at the client system. In at least one embodiment, the first overlay advertising impression includes advertising information comprising a second portion of content which is different from the first portion of marked up content.

RELATED APPLICATION DATA

This application is a continuation application, pursuant to 35 USC §120, of prior U.S. patent application Ser. No. 09/943,571 (AttorneyDocket No. KABAP003) entitled “DYNAMIC DOCUMENT CONTEXT MARK-UPTECHNIQUE IMPLEMENTED OVER A COMPUTER NETWORK,” by Henkin et al., filedon Aug. 29, 2001, which claims benefit under 35 U.S.C. § 119 to U.S.Provisional Application Ser. No. 60/229,452 (Attorney Docket No.KABAP002P), naming Henkin et al. as inventors, and filed Aug. 30, 2000,and which also claims benefit under 35 U.S.C. § 119 to U.S. ProvisionalApplication Ser. No. 60/311,418 (Attorney Docket No. KABAP002P2), namingHenkin et al. as inventors, and filed Aug. 9, 2001. Each of theseapplications is incorporated herein by reference in its entirety and forall purposes.

BACKGROUND OF THE INVENTION

Despite the Internet's recent origin, this medium has rapidly become animportant source of information for individuals and businesses. Thepopularity of the Internet as an information source is due, in part, tothe vast amount of available information that can be downloaded byalmost anyone having access to a computer and a modem. One of theInternet's strength lies in its open-ended nature since it is notsupervised or controlled by any person or entity. These and otherfactors have caused an exponential increase in Internet usage and withit, an exponential increase in the volume of information available.

Moreover, the internet is especially conducive to conduct electroniccommerce, and has already proven to provide substantial benefits to bothbusinesses and consumers. Many web servers have been developed throughwhich vendors can advertise and sell products directly to potentialclients whom access their websites. To attract potential consumers totheir websites, however, like any other business, requires targetadvertising. One of the most common and conventional advertisingtechniques applied on the internet is to provide an advertising banneron the web page of another website which directs the client to theadvertiser's site when the banner is selected. Since it would not befinancially prudent secure an advertising banner on every website, theadvertiser generally selects websites which provide context or servicesrelated to the advertiser's business.

One problem, however, that many businesses are confronted with today isthat they cannot proactively reach, serve, interact, sell or makerelevant offers to consumers while the consumers are at web pagesoutside of their businesses' Web domain (website, toolbar, email, etc.).The most severe consequence of this problem occurs when a consumer hasan interest in products, services or information that the businessoffers but the business is unaware and thus is unable to reach and servethis user. As a result, businesses miss revenue generating and/or costsavings opportunities.

Moreover, the key for a cost effective operation is determined by theefficiency of the flow of goods, services, along the value chain fromsuppliers, vendors, partners or manufacturers (herein referred to as“Suppliers”) through the business, and to the business's customers orusers. Today, a web domain is the primary online vehicle to serve apersonalized, targeted flow of services and Information from thebusinesses to the users and customers. Businesses cannot take advantageof the World Wide Web as a platform on which they can reach and serveusers with relevant Information, outside of their own Web domain.

SUMMARY OF THE INVENTION

According to various embodiments of the present invention, methods,systems, and computer program products are disclosed for generatingmarkup information to be displayed on a client computer system. Theclient system includes memory configured to store at least one updatefile which comprises keyword information relating to keywords suitablefor markup. In one implementation, the update file is generated at aremote server system and downloaded to the client system. After a newdocument (e.g. a web page) was downloaded to the user's machine, thebrowser that the user choose to parse the document and displayed on theclient system to an end user and in addition to the preferences thatusers choose to have his browser act upon, selected context associatedfrom the document is analyzed for selected keywords in the displayeddocument. In a specific implementation, the selected keyword informationis provided by an entity other than the end user. Using the selectedkeyword information, specific context in the document is selected to bemarked up. According to a specific embodiment, the selection of thedocument context to be marked up may be performed at the client system.Markup operations are then implemented at the client system on at leasta portion of the selected document context, thereby resultingtemporarily in marked up document context on the users PS which has avisual appearance that is different than the appearance of the documentas it was retrieved context. According to a specific embodiment, a fuzzysearch technique may be used for identifying selected keywords in thedocument context. Selection of the appropriate document context to bemarked up may also be determined based upon other such as, for example,negative words, site restrictions, click behavior of the user,predetermined business rules, etc. According to a specific embodiment,when the user clicks on the markups. Alternatively, a pop-up window orlayer which includes a plurality of different links may be displayed tothe user.

Alternate embodiments of the present invention are directed to methods,systems, and computer program products for generating pop-up advertisinginformation to be displayed on the client computer system. When a newdocument (e.g. a web page) is displayed on the client system to an enduser, selected context associated from the document is analyzed forselected keywords. Specific context in the document may then beidentified using the selected keyword information. Based upon theidentified context in the document, a selected pop-up advertisement maybe automatically displayed on the client system.

In another aspect of the present invention, methods, systems, andcomputer program products are provided for predicting the number ofclicks a campaign may provide for specific publishers and for specificcategorical information.

Additional objects, features and advantages of the various aspects ofthe present invention will become apparent from the followingdescription of its preferred embodiments, which description should betaken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of an information distribution and contextmarkup system 100 in accordance with a specific embodiment of thepresent invention.

FIG. 2 shows a block diagram of an EZ server system 200 in accordancewith a specific embodiment of the present invention.

FIG. 3 is a schematic diagram of the context hierarchy in accordancewith a specific embodiment of the present invention.

FIG. 4 shows a flow diagram illustrating how various components of theinformation distribution and context markup system interact with eachother to implement the various aspects of the present invention, inaccordance with a specific embodiment.

FIG. 5A shows a portion of a client system 500 which has been configuredto implement the technique of the present invention in accordance with aspecific embodiment.

FIG. 5B shows a block diagram of a frame agent 510 a in accordance witha specific embodiment of the present invention.

FIG. 6 shows a flow diagram illustrating how various components of theclient system interact with each other to implement the various aspectsof the present invention, in accordance with a specific embodiment.

FIG. 7 shows a specific embodiment of a flow diagram illustrating howvarious information flows are passed between the client system and theserver system of the present invention.

FIGS. 8-10 illustrate specific embodiments of data structures which maybe included in the campaign provider download component and/or updatefiles which are downloaded to the client system and used forimplementing various aspects of the present invention.

FIG. 11 shows a flow diagram of a Client Process Flow 1100 in accordancewith a specific embodiment of the present invention.

FIG. 12 shows a flow diagram of a User Click Behavior Analysis Procedure1200 in accordance with a specific embodiment of the present invention

FIG. 13 shows an example of a browser window 1300 which may be used forillustrating various aspects and features of the present invention.

FIGS. 14A-D illustrate a specific example of various data structures andinformation provided in campaign update files which have been downloadedto a client system.

FIG. 15 shows a flow diagram of a Restriction Analysis Procedure 1500 inaccordance with a specific embodiment of the present invention.

FIGS. 16A and 16B illustrate flow diagrams relating to a Search AnalysisProcedure 1600 in accordance with a specific embodiment of the presentinvention.

FIGS. 17A-E illustrate examples various data structures which may beused for implementing various aspects of the present invention.

FIG. 18 shows a block diagram of a Results Data Structure entry 1800 inaccordance with a specific embodiment of the present invention.

FIG. 19 shows a flow diagram of a Markup Procedure 1900 in accordancewith a specific embodiment of the present invention.

FIG. 20 shows a portion of a web page 2000 which has been Marked Up inaccordance with the technique of the present invention.

FIG. 21 is an example of one type of pop-up layer which may be displayedto the user in accordance with a specific embodiment of the presentinvention.

FIG. 22 illustrates a network device 60 suitable for implementingvarious aspects of the present invention.

FIG. 23 is an exemplary Table of season factors (S) for specificCategories which are applied when predicting the number of clicks for aCategory in accordance with the present invention.

FIGS. 24A-24K show examples of browser windows which may be used forillustrating various aspects and features of the EZ Manager Applicationof the present invention.

FIGS. 25A-25J show examples of browser windows which may be used forillustrating various aspects and features of the EZ Gateway Applicationof the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Overview of SystemComponents

This section describes an overview of various components which may beused for implementing various aspects of the present invention. It willbe appreciated that the overview description provided in this sectionmerely represents an example of specific embodiment of the functions andimplementations of the various components. Additional embodiments aredescribed in subsequent sections of this application.

According to a specific embodiment, the present invention includes anumber of system components, including a server application, a clientapplication and an extranet application.

According to a specific embodiment, the extranet application hostssecure and personal accounts for different business customers. Abusiness customer representative may log in and manage the data andactions for the business' community. Data may be modified (added,changed or deleted), and actions that relate to this data may bemodified as well. When completed, the modifications may then be saved,and the changes automatically posted to the server application system.The server application may then forward the modified data to the clientapplication via one or more update files.

The client application includes a search engine which is configured toperform multiple types of identification and matches based on a givenset of data and the textual context on a given document or web pageafter such web page is being parsed according to the user's preference.According to a specific embodiment, the search engine operates on theend user's machine, and utilizes local processing and memory resources,thereby making the present invention highly scalable. In one embodiment,the search engine resides on the user's machine as part of the clientapplication. It uses data that is sent in the form of update files tothe client application from the server application. The update files maybe automatically downloaded to the client system on a periodic basis.The update files include indexed data for the search engine. This datamay be divided into display names and keywords, as illustrated in thefollowing example:

Display name: SONY DVD Player DV120

Keywords: SONY, DVD, Player, DV120

The search engine uses the display name and keywords in order to analyzethe context of a selected document (e.g. web page) for the presence ofselected keywords (which are specified in the update files).

According to a specific embodiment, the search engine is designed tosupport different business requirements. It may operate in a variety ofsearch modes, including an exact search mode and a fuzzy search mode.The search engine may search the document text, WEB PAGE, title, Metatags, or any other property of the selected document for selected keywords or phrases. In one embodiment, a search is conducted by analyzingwords in the text of a selected document to see if it includes specifiedkeywords or phrases. If a match is found, the location and position ofthe identified keywords in the document text may be recorded and usedsubsequently for temporary markup analysis and implementation.

The client application may start running automatically when the userinitiates a browser application. While a user surfs the Web, the clientapplication performs advanced contextual analysis to make matchesbetween keywords (specified in the update files) and the context on theweb page being displayed on the user's system. Once a match is made,matched items (e.g. product names, keywords, phrases) are visuallymarked up (e.g. underlined, highlighted). The specific implementation,the end user may be allowed to configure the appearance of the marked upcontext.

In the example above, it is assumed that a match for “SONY DVD” has beenidentified in the current web page, and marked up in accordance with thetechnique of the present invention. When the user clicks on the markedup context, the user may either be directed to a new web page relatingto SONY DVD Players, for example, or a pop-up layer may be displayedwhich includes different possible matches for the selected marked upcontext. One of these possible matches may be a URL for a web pagerelating to the SONY DVD Player DV120. If the user clicks on this itemin the pop-up layer, he or she will be redirected to the correspondingweb page.

According to a specific embodiment, the client application may alsoproactively initiate a Browser control (s) onto the current document.Such layers may be customized to match a business customer's brand, andmay include additional information such as, for example, a summary ofproducts, keywords and phrases, advertising banners and/or marketingmessages. Moreover, such additional information may be selected basedupon specific context which is found to be included in the currentdocument. In one implementation, if the user clicks on the marked upobjects on the page and/or on linked objects within the layer, anotherdynamic layer may automatically be displayed with more information andoptions. Alternatively, the user may be automatically directed to aspecific web page, based upon the user's selection.

In one embodiment, the client application includes an agent which may beresponsible for processing context contained within the current documentor web page, and for performing markup of selected text or keywords. Inone implementation, the agent passes elements from the parsed page tothe search engine (which also resides in the client application). Thesearch engine compares the page elements to a given set of data andpasses relevant matches back to the agent. The agent receives thisinformation from the search engine and performs markup of differenttextual objects on the page. The agent may also open a corner layer withmore relevant information.

According to a specific embodiment, the client application may include amain application, and agents that are configured to open with eachbrowser that the user opens. The agent waits for a download completeevent and document complete event from the browser. Once the downloadcomplete event is fired, the agent extracts the text from the pagewithout the HTML tags, the links, and the HTML table cells. The agentpasses this to the search engine in the main application that is part ofthe client application. The search engine then uses a hash tablemechanism in order to complete the search process. Once the searchprocess is complete, the search engine passes results back to the mainapplication, which in turn passes parameters back to the agent. Theagent then marks up the textual objects which were identified in thecurrent document.

Additionally, according to a specific embodiment, a global uniqueidentifier (GUID) may be stored on each user's machine. For example, theGUID may be stored in the computers registry as part of uniqueapplication data. This GUID may be linked either directly or indirectly(e.g. via a cross-reference table) to other systems, for example, toenhance the service and personalization attributes available to the enduser.

According to specific embodiments of the present invention, a techniqueis described that enables any targeted word, phrases, etc. on any parsedweb page to be converted into a link of any designation. Moreparticularly, this context-based technology provides any informationdistributor (e.g., an Advertiser) with a platform that proactivelyresponds to the textual context on any given web page that theirselected audience is viewing, anywhere on the Internet, by marking uppre-defined keywords or phrases on every Web page. In effect, targetedstatic HTML context, for example, can be converted into links thatdirect these users to specific WEB PAGEs and/or present relevant offers(banners, rich media).

Thus, in one embodiment, this application is particularly suitable foradvertising applications since publishers, advertisers, and technicaladministrators could leverage the context that a user is viewing, inreal time, and convert key phrases or words in the context, on any Webpage. This presents a significant advertising opportunity since thistargeted static HTML context could be applied to direct qualifiedtraffic to the advertiser, based on the context, from all over the Web.Hence, this contextual analysis technology facilitates the delivery of ahigher targeting and relevancy of promotions, significantly lower adserving costs, higher click-through rates, and a dramatic increase ofconversion rates and user ‘buy’ actions. Advertisers can more preciselytarget their audience with existing and additional services directly topre-defined targets according to the context of the web.

Brief System Overview

Referring now to FIG. 1, a schematic block diagram of an informationdistribution and context markup system 100 is provided which illustratesone specific application implementing the contextual based platform ofthe present invention. In one specific embodiment, an Campaign Provider(e.g., an Ad Campaign Provider), such as EZULA, INC. of San Francisco,Calif., markets and bundles their context based platform (e.g., theCONTEXTPRO™) with their partner Distributor/Publisher's 108 applicationsoftware, such as with the ISP's KAZAA, JUNO, AOL, etc. Thus, as will bedescribed in greater detail below, when a Client₁-Client_(N) 110 of thepartner Distributor/Publishers 108 downloads the Distributor/Publisher'sapplication software when activating an account, a Campaign Providerdownload component from the Ad Campaign Provider will also be installedtogether with the Distributor/Publisher's application software.Consequently, the Clients 110 can then access the EZ Servers 106 of theAd Campaign Provider via the Internet. This implementation will bebetter described below.

In one example, an Information Distributor 102, such as an Advertiser(e.g., Wells Fargo Bank) and an Advertising Broker 104 (e.g., I-Traffic)negotiate the Campaign Details of an Information Distribution Campaign(e.g., an Ad Campaign). Briefly, as will be described in greater detailbelow, these negotiated Campaign Details may include the campaign name,appropriate super category and/or categories of the Advertiser's productfield; the selected keywords; additional keywords specific for thiscampaign; the duration of the ad campaign, projected total number ofclicks, the Cost Per Click (CPC), the desired publishers to run thecampaign with their respective users, and web domains of the advertiserwhere Markups will not appear. Furthermore the WEB PAGEs to be linked,with the appropriate title which is the text message that appearson-hover of marked up text and in the pop-up layer of annotations forhyperlinks. For instance, in Well Fargo's Ad Campaign example, thekeyword “bank” may be selected to be highlighted or marked-up for allthe Clients 110 subscribing to JUNO, whom is a Distributor/Publisherpartner of the Ad Campaign Provider. These Ad Campaign details are thenuploaded into the EZ Servers 106 by either the Advertising Broker 104 oran EZ Sales Agent 105.

Briefly, an Advertising Broker 104, such as I-Traffic, or L90, istypically an entity that brokers an advertiser account with anAdvertiser. The Sales Agent 105, in one specific embodiment, is anemployee of the establishment providing the advertising services inaccordance with the present invention. These Agents, thus, may serviceseveral accounts by one or more brokers.

This Campaign Data is then processed by the EZ Servers 106, as will bedescribed in detail below, and distributed, via, the internet, to thedownloaded Client Applications of the member Clients 110 of theDistributor/Publisher partners 108 (i.e., JUNO in this example) of theAd Campaign Provider (i.e., EZULA) selected by the Advertiser (i.e.,Wells Fargo). Accordingly, when one of the Clients 110 is surfing theInternet, regardless of what web page they are viewing, the ClientApplication scans the text of the web page, analyzes the context, andmarks up keywords and/or phrases. Upon the presence of the selectedkeywords and/or phrases, these once static HTML text are is thenconverted to hyperlinks to the advertiser's site. In this example, theoccurrence of the keyword “BANK” will be converted to a URL destinationthat Wells Fargo selects. Thus, the Client may click on the markedkeyword or context in the dynamic layer. The Client's browser is thenredirected to the new destination.

Briefly, while the Distributor/Publisher partners 108 have primarilybeen referred to as ISPs, it will be appreciated that any number ofentities or device may distribute the Ad Campaign Providers ClientApplication. For example, these entities or devices may include MP3Players (Jukebox software, Internet Radio), P2P & IM Clients (instantmessaging, file swapping), Browser Companions (shopping bars, mileagepoints, form-fillers), Browsers, Online Games and Gambling providers,Distributed Application Providers (Download accelerators, DocumentViewers, Plug-ins, Streaming, Skins, Audio players), PC/Internetsoftware distributors (New PCs, Dialup Kits, Fax Software), PCmanufacturers or independently by the user.

Referring now to FIG. 2, a schematic block diagram illustrates varioussystems, subsystems and/or components of the integrated systemarchitecture of the EZ Server System 200 in accordance with a specificembodiment of the present invention. As shown, the EZ Server System 200includes a plurality of subsystems and other components for effecting aplurality of Ad Campaigns over a data network. A brief description of atleast a portion of the plurality of subsystems of Server System 200 ispresented below. For example, Server System 200 of FIG. 2 generallyincludes the two primary application components: an EZ Manager Component202, and an EZ Gateway Complex Component 210. Briefly, the EZ ManagerComponent 202 is an advanced web-based application which enablesadvertising agencies and their sales executives or other advertisingsales entities to: view the available inventory of the Ad CampaignProvider, in real time; plan and book new campaigns; manage ongoingcampaigns (modify campaign properties such as CPC, duration, categories,keywords, URL, Title, etc.) and view detailed online reports. The EZGateway Complex Component 210, in one specific embodiment, is composedof a plurality of server applications which cooperate collectively tomanage, process, update, and log all the Campaign Data and Clientactivity relating to each Ad Campaign.

As shown in FIG. 2, Server System 200 may include at least a portion ofthe above-described subsystems. Additionally, each subsystem may alsocomprise at least one server and/or other components. Preferably, theApplication Servers are configured as web servers that have a loadbalancing mechanism in front of them. Preferably the load balancefunctionality is provided by a CISCO Local Director 430 appliance, whichdistributes connections across the Application Servers, creating avirtual connection from the Client to the Application Server. Thistechnique enhances the performance of all servers in the cluster andfacilitates real-time addition and removal of individual ApplicationServers from the cluster with no disruption of service. In front of theentire server farm resides a firewall appliance that protect the dataand applications from unauthorized access. Preferably the firewallfunctionality is provided by a CISCO PIX 520 firewall appliance.

Each subsystem may be configured or designed to communicate with eachother via a plurality of interfaces. According to a specific embodiment,the plurality of interfaces includes both synchronous and/orasynchronous interfaces. Many of the various system interfaces areconfigured to be asynchronous, wherein data is typically transferred inbatch mode via staging (e.g. database) tables or flat files (e.g.,separated value files). However, at least a portion of the systeminterfaces are configured as synchronous interfaces. Generally, asynchronous interface may be used where an immediate response from aserver or component is required.

Referring back to the EZ Manager Component 202 of the EZ Server System200, this web-based application allows the Advertising Agencies 102,Network Brokers 104, In-House Sales Agents 105, etc. to view the currentinventory of Super Categories 302, Sub-Categories 304, and Keywords 306(FIG. 3) available by the Ad Campaign Provider. Other viewableinventory, as will be apparent in one specific embodiment, includes theprojected available clicks based on the appropriate Campaign Providernetwork segment(s). This application which is hosted by the CampaignProvider within their web farm, also enables the planning and booking ofnew campaigns by selecting the appropriate categories and keywords, andsetting the appropriate relationship with the advertiser's onlinedestinations; the viewing of online campaign performance reports; andthe managing of active reports.

The EZ Gateway Complex 210 of the EZ Server System 200, in accordancewith a specific embodiment, is composed of a plurality of serverapplications which include an EZ Hub 206, and EZ Admin 208 and an EZGateway 204. Briefly, the EZ Hub 206 is a server application that isresponsible for communication, updates, data collection, reporting andmonitoring of the Client Applications which are distributed to theClients 110 of the Distributor/Publisher partners 108.

The EZ Gateway 204 is another server application that allows campaignmanagers, business analysts, system managers and technical personnel(engineers, system administrators, and programmers) to process andmanage campaigns, analyze and enhance campaign performance, and controlthe data flow to the different types of distributed applications. Sincethese entities often require immediate, real time access to differentelements within the platform, the EZ Gateway 204 enables them tocomplete several tasks with maximum efficiency and control.

For example, for processing and managing campaigns, the EZ Gatewayapplication enables new campaigns to be tested for accuracy andconflicts, which are then processed through the system. As will beapparent, this application allows active campaigns to be modified (newcategories and/or keywords) in order to achieve the campaign'sobjectives. Campaign analysis can also be performed where the serverapplication analyzes data and creates reports on an ongoing basis. TheEZ Admin Server automatically creates these reports and assist inanalyzing the different aspects of the campaign in order to betterunderstand the results and reach the campaign's objectives within thecampaign's timeframe. After creating the reports, EZ Admin Server 208places these reports on EZ Manager 202 for the sales entities to access.

In other specific implementations, the EZ Gateway 204 performs datamanagement tasks as well. The Client Application that performs thecontextual analysis that analyzes web pages in real time, then marks uptextual objects on the page, uses several advanced algorithms that canbe tweaked in order to better leverage the pages' context. EZ Gateway204 allows engineers, system administrators and context editors accessto this information using several web-based interfaces. The EZ Gateway204 also performs category management tasks such as permitting the AdCampaign Provider to enhance their ontology (the database of categoriesand keywords) on an ongoing basis, in real time.

Regarding the EZ Gateway component 204 of the EZ Gateway Complex 202,secure and reliable access to campaign application and configurationdata from personal computers can performed via a web-based applicationhosted at the Ad Campaign Provider. By way of example, this serverapplication permits a line-of-business manager to: upload new CampaignData information (e.g., Display Strings, keywords, product names,promotional information, destination etc.); to manage the informationand different application properties; view and print reports, and modifybusiness rules.

As previously indicated, at least a smaller starter application (TheStub) is included in the bundle of software applications downloaded onthe clients 110 personal computer when activating an account with theDistributor/Publisher 108. This Client Application is a client sideapplication that is the core of Campaign Provider's contextual analysisengine. Briefly, as will be described in detail in the discussion ofFIG. 5A, the Client Application 520 includes a Contextual AnalysisEngine (CAE) 522, a Server Communication Component (SCC) 524 and aCycling Analysis Component (CAC).

This Client Application 520 can be easily incorporated with other clientapplications that are distributed through multiple channels (update,online, CD, etc.). To improve efficiency, and to reduce the size of thestub that is bundled with the software that the publisher distributes,the present invention utilizes at least two primary smart downloadtechnologies (SDT) that can be downloaded through various direct andindirect distribution channels. The first is to provide an Active Xcomponent for the Distribution partner web-based application (HTML pageor email). This technique provides the distribution partner a link to acustom page that initializes the ActiveX installation. This link may beplaced within HTML pages, HTML emails, and text emails. Upon clickingthe link, a small CAB file is installed, which in turn installs theClient Applications files. This download is completed in the backgroundso that the Client may continue surfing the Internet without any visualinterface.

In another implementation, the second Smart Download Technologytechnique is the application of Stub Technology that streamlines thedistribution process of the Client Application within user installedbase of other applications. Briefly, Stub Technology is a softwarecomponent that installs the Client Applications files. This download iscompleted in the background so that the Client may continue surfing theInternet without a visual interface.

Thus, when the Client is on-line, the Stub fetches the appropriateClient Application and data files from the appropriate server that couldbe the nearest Context Delivery Network (CDN) server, such as an Akamaiserver or other server provided by the company and as will be discussedin greater detail below, creates an Ad Campaign Provider folder,registers DLLs, and sets registry values. In order to completeinstallation, the Stub requires that the Client will be online. However,the Stub can be executed while the Client is off-line, and will thencomplete the installation once a valid connection is achieved. Bydefault, if the terminal is not connected, or the connection was lostduring the installation, the stub will attempt to complete theinstallation periodically (e.g., every 10 minutes) or after the nextboot. Every such attempt requires to check if the user is online. If theconnection ends before a complete installation, the installation willresume from the point that it stopped the next time that the userconnects.

FIG. 4 best illustrates a detailed data flow diagram of varioussubsystem and component interactions during normal business operationsfor effecting electronic commerce in accordance with a specificembodiment of the present invention.

Beginning at (1) a Broker/Sales Agent 404 and an Advertiser 402negotiate an advertising campaign contract. Briefly, as set forth inFIG. 1, the Broker 104 is typically an entity whom brokers an advertiseraccount with an Advertiser, such as I-Traffic, Or L90. The Sales Agent105, in one specific embodiment, is an employee of the Ad CampaignProvider in accordance with the present invention. These Agents, thus,may service several accounts by one or more brokers. As will bedescribed in greater detail below in FIGS. 24A-24L, such negotiatedterms may include the appropriate super category and/or categories; theselected keywords; the length of the ad campaign, projected total numberof clicks, the Cost Per Click (CPC), the desired publishers, thenegative keywords; the popup titles and descriptions, the URLs to belinked, the restricted web pages; and the Match Type which isessentially the binary number that instructs the client application howto behave for this specific keyword.

At (3), the Broker/Sales Agent 404 accesses the EZ Manager 202 componentof the EZ Server System 200 through a personal computer via Internet orthe like. In one specific implementation, the Broker 104 or Sales Agent105 (FIG. 1) inputs these ad campaign contract details into the personalcomputer, and uploads the Campaign Data (CD) to the EZ Manager 202. Inanother specific implementation, the Advertiser may have access to theEZ Manager 202 and be permitted to directly input the ad campaigncontract details themselves. Once the Campaign Data, is entered into theweb application of EZ Manager 202, it is stored in the EZ Server Systemdatabase for processing.

At (5) the Campaign Data, which as set forth above includes the contractdetails (i.e., number of clicks, campaign length, desired publishers,etc.), is sent from the EZ Manager 202 to the EZ Gateway 204 componentof the EZ Gateway Complex of EZ Server System 200. In one specificexample, this Campaign Data is transferred as a set of files containingany new relationships between new or existing campaigns and publishers.Typically, for every campaign added or modified, up to 3 files areuploaded in one specific embodiment. These include a “Keywords andtitles” file; an optional “Categories” file; and an optional “Sites”file.

Once the files are uploaded to the EZ Gateway 204 component, theCampaign Data is read processed via EZ Admin Server 208 to the databaseof the relevant tables at (7). Initially, the EZ Gateway 204 determinesthe relationship between the new or modified campaigns of the Advertiser402 (or 102 in FIG. 1) and the respective Distributors/Publishers 108(FIG. 1). For example, every Distributor/Publisher 108 (e.g., AOL®,JUNO) that has a new campaign should be updated. Further, everyDistributor/Publisher that was removed from a campaign should beupdated, and every Distributor/Publisher that is associated with acampaign that was modified should be updated. In one configuration, thisrelationship determination process of the Campaign Data may be may beautomatically or manually implemented.

Referring now to (9), the Campaign Data is prepared for publication tothe Clients 410 of the selected Distributors/Publishers 108 determinedat (7) for the respective campaigns. All new or modified campaigns areassigned a new version number for the selected publishers to allowclients 410 from their respective publisher's to be informed of updatedcampaign information to be downloaded. While this data preparation ispreferably performed when an new campaign is instituted or an existingone is modified, in one specific embodiment, this publication updatesequence may be automatically performed periodically (e.g., every night)by the EZ Gateway 204 as well.

In one specific implementation, when the Campaign Data is being added ormodified for a Distributor/Publisher, a major or a minor change isselected. A major update includes the whole data set, and a minor updateis an incremental data update that adds, deletes or modifies part of thedata.

The new update files are then generated at (9) for the relevantDistributor/Publishers. In one specific implementation, all thecampaigns that are associated to a particular Distributor/Publisher areconsolidated in one table (e.g., a snapshot table) or set of CampaignUpdate Files for that Distributor/Publisher. If a Major update occurs, anew set of Major Campaign Update Files is generated to replace oldCampaign Update Files. In contrast, if a Minor update occurs, the newCampaign Update Files are compared to the old Campaign Update Filesgenerated in the previous version. Minor update files are then generatedaccordingly.

Briefly, the processed data files or tables for updating contain aplurality of Display Strings and Keyword Data for eachDistributor/Publisher selected by the Advertiser for that campaign. Byway of example, and as will be described in greater detail in thediscussion of FIGS. 8-10, the display strings may include a CategoryDisplay String (FIG. 8), a Key Phrase Display String and, or TitleDisplay String (FIG. 9) and a Site Display String (FIG. 10).

Once the files have been processed at (9), the table or tables ofupdated data files are distributed to a Context Delivery Network (CDN)409 at (11) for updating by the designated Clients 410 of theDistributor/Publisher partners. Briefly, these CDNs 409, such as Akamai,Mirror-Image, etc. provide a wide area network of geographicallyoptimized web servers. Hence, a member Client 410 of one or moreDistributor/Publisher partners will have access to the updated filesfrom the closest CDN 409 server.

Accordingly, at (13), the Client Application (or the Client 410)periodically checks and compares a version number assigned to theCampaign Update Files stored at the CDN 409 with the version number ofthe Campaign Update Files table resident on their personal computer. Ifthe version numbers do not match, the Client Application submits arequest to download the new Campaign Update Files. When the request fordownload is received (13) at the CDN 409, the Client Application ofClient 410 accesses the CDN 409 to retrieve the updated or new CampaignUpdate Files, which will include any new campaigns, and/or campaignswhich have been modified for the Distributor/Publisher partners of whichthe Client is associated with. As an example, this periodic check isperformed every hour.

At (15), once the Client 410 begins accessing web pages, the ClientApplication performs a contextual analysis and markup of the downloadedHTML data from each web page using the updated Campaign Update Files.Briefly, the Client Application scans the page, analyzes the context,and marks up the Advertiser or information provider selected keywords orcontext and/or places dynamic layers on the page. In other words, thetextual objects, terms phrases, etc. selected for highlighting by theAdvertiser 402 in the campaign will be turned in to hyperlinks.

Should the Client elect, at (17) they can then click on the markedkeywords or context impressions in the dynamic layer which will thenredirect the Client's browser to the Advertiser's destination. In oneembodiment, click-on options may include direct hyperlinks to specificweb pages or multiple sites; pop-up layers with dynamically servedbanners; and pop-up layers with promotional information and multipledestination links. This analysis technique, of course, will be discussedin much greater detail below.

When the User redirects the browser to an Advertiser's web page from oneof the marked keywords, the redirection is logged. This is commenced at(19) where the logged data is transmitted from the Client Application ofthe Client 410 to the EZ Hub 206.

At (21) the EZ Admin Server 208 processes the logged data for updatingin the reports and billing information. This process involves preparingreports based on the raw data in log format that is gathered on EZ Hub206 and placing these reports in the appropriate location on EZ Manager202 for the appropriate entities to view. This logged data, for example,includes the Number of Clicks, the keyword that were highlighted etc.

Once the logged data is processed by the EZ Admin Server 208, the Reportand Billing Information is forwarded to the EZ Manager 202 at (23) wherethis information may be accessed by the Broker/Sales Agent 404 or theAdvertiser 402. This is performed at (25) by the Broker/Sales Agent 404and at (27) by the Advertiser 402. The Advertiser 402 may then requestthat the Broker/Sales Agent 404 adjust or modify the Ad Campaign Databased upon the Report Information if desired.

After a Broker 104 and/or Sales Agent 105 has negotiated the CampaignDetails of Ad Campaign with an Advertiser 102, the Campaign can bebooked using a personal computer to access the EZ Manager component 202of the EZ Server System 200 (FIG. 2). The EZ Manager, briefly, is a coretool for creating campaigns and designing their ontology. This web-basedapplication allows Advertisers 102 (agencies, networks, in house salesagents, etc.), through their Brokers 104 and/or EZ Sales Agents 105, to:view the current inventory of categories, keywords, and projectedavailable clicks based on the appropriate network segment(s); plan andbook new Ad Campaigns by selecting the appropriate categories andkeywords, and set the appropriate relationship with the Advertiser'sonline destinations; view online Ad Campaign performance reports; modifyongoing campaigns, and view activity reports.

For the ease of description, the EZ Sales Agent 105 will be the partydescribed as entering the Campaign data into its EZ Manager Application.It will be appreciated, however, that the Broker 104 or even theAdvertiser may be granted access.

The Server Application

EZ Manager Application

Referring now to FIG. 24A, the EZ Sales Agent 105 logs into the EZManager component 202 of the EZ Server System 200 at a Login page 3000using conventional LOGIN techniques. In one specific embodiment, the EZManager requires a user account to login with an e-mail address and apassword. Once LOGIN is complete, and the e-mail address and passwordare verified, the application redirects the User to the Main Menu page3001 shown in FIG. 24B. This is the access menu to the variousapplications of the EZ Manager web application, and is used to: Plan aCampaign: Access Reports: Administrate Pop-Up Advertisements:Administrate Campaigns; Manage Inventory: and/or Add a New Advertiser.As shown, this is performed by selecting one of the corresponding links:Plan a Campaign 3002; Access Reports 3003; Administrate Pop-UpAdvertisements 3004; Administrate Campaigns 3005; Manage Inventory 3006;and Add a New Advertiser 3007.

By way of example, to book a new campaign, the Sales Agent 105 initiallyselects the “Plan Campaign” button 3002 shown in the screen shot of FIG.24B. The EZ Manager web application will then redirect the Sales Agent105 to the main booking page 3008 shown in the screen shot of FIG. 24C.

This page contains a “Plan By Keywords” box 3010 which enables the Agentto plan an Ad Campaign through a keyword search, and a “Plan ByCategories” box 3011 which enables the Agent to plan an Ad Campaignthrough a Category search. A “Campaign List” Box 3012 is also includedwhich indicates the selected categories. In this example, the SuperCategory “Apparel” has been selected along with the Categories“Accessories” which contain the Sub Categories “Belts”, “Handbags”,“Hats” and “Neckties”.

Initially, a campaign may be planned by a keyword (i.e., the “Plan ByKeywords” box 3010) or planned by a Category (i.e., the “Plan ByCategories” box 3011) to identify the keywords and/or categories thatare associated to the keywords. To commence a keyword search, forinstance, the selected keyword may be typed into the search box 3013 ofthe “Plan By Keywords” box 3010. Subsequently, the “Search” button 3015will be selected to execute the search, and redirect the Sales Agent 105to the Search Results page 3016 shown in the screen shot of FIG. 24Dwhich will be described below.

A search of a keyword in search box 3013 yields both exact search termmatches, and text string matches. For example, a search of the keyword“Clothing” in search box 3013 yields the Super Category “Apparel”containing the exact keyword “clothing” in the description. The ApparelSub Categories “Hawaiian” and “Work Clothes and Uniforms”, in thisexample, also yielded the keyword text strings “Hawaiian clothing” and“Work clothing”, respectively. Exact keyword matches may be highlightedin one color (e.g., pink), while Text Strings matches may be highlightedin another color (e.g., yellow).

In one specific implementation, the participating Distributor/Publishers108 are also listed with the predicted number of clicks per day perpublisher for each of these categories. Should a selecting Sales Agent105 click on one of the “Select” checkbox 3017, the estimated orpredicted number of clicks of the Agent's selected categories will becalculated in the “Total” Box 3018 for the selected number of days inthe “Days” box 3020. For instance, in a seven (7) day period, there ispredicted to be about 384 clicks. An algorithm that predicts the numberof clicks per publisher for each selected keyword in a selected Categorywill be discussed in detail below.

The “Campaign List” Box 3012 of the previous page is again provided inthe Search Results page 3016 which contains any previously selectedcategories.

Briefly, the contextual inventory is organized and categorized intoSuper Categories 302, Sub-Categories 304, and Keywords 306, as shown inFIG. 3. In accordance with one specific embodiment, this organizationaltree is applied to organize the Keywords and/or phrases under theirappropriate product Categories. As will be apparent in the detaileddescription of the EZ Manager Component 202, this technique is necessaryto facilitate searching of Keywords and/or phrases and the correspondingContextual Categories 302 they are under. Further, this categorizationsallows the Ad Campaign Provider to provide the Advertisers 102 withpre-configured keyword sets that apply to their business. Consequently,the Ad Campaigns can be activated more quickly. Another benefit of suchterm categorization is that the Ad Campaign Provider is better able toproject and manage inventory, and to implement and service the AdCampaign. By managing the delivery of the specific, sub-categorykeywords and the more general super-category keywords, the effectivenessof the Ad Campaign can be maximized by the Ad Campaign Provider.

In one implementation, the hierarchy of the Super-Category 302 isdesigned to provide Keywords that can apply to multiple Categories at ahighest level and for very specific Keywords at a lower level. Forexample, a Credit Card company may be offered Keywords in the “PersonalFinance” Super-Category, such as Keyword “credit”, and then be offeredKeywords in the Sub-Categories “Personal Finance—Credit Cards” and“Personal Finance—Credit Cards—Low Rate”, such as the Keywords “creditcard” and “low rate credit card”, respectively. This is but oneorganizational example, and it will be appreciated that the suchcategorization be adjusted according to need.

The second campaign planning technique, according to one specificimplementation is to search through the entire list of categories, tosearch for those keywords and/or categories which seem to best apply.These may be accessed by clicking on the window button 3021 which willlist the available categories (not shown) of the “Plan By Categories”box 3011. Referring back to FIG. 24C, once a category has been selectedsuch as “Apparel—Accessories—Scarves & Muffs” in the category box 3022of the “Plan By Categories” box 3011, a list of keywords 3023 containedwithin that selected category is be displayed in the Keyword Box 3025).In this example, the keywords 3023 “ear muff, earmuff, Pashimina, silkscarf . . . ” are displayed. Adjacent the Keyword Box 3025 is a StatusBox 3027 which indicates the current booking status of the categoryselected. As an example, this Apparel category for “Scarves and Muffs”is booked by the one or more publishers 108 indicated. At the right mostend of the of the “Plan By Categories” Box 3011 is an “Add to theCurrent List” Button 3028 which, when executed, will add that categoryto the “Campaign List” Box 3012.

Referring back to FIG. 24C, when the Sales Agent 105 has finished addingcategories, use the “Click to review your campaign” button 3030 may beexecuted which redirects the Sales Agent 105 to the categorymodification page 3031. This second page of the booking process, as bestviewed in FIG. 24E, contains the list of categories the Agent hasselected for the Advertiser's 102 campaign. This category modificationpage 3031 is essentially provided to enable modification of theassociated keywords for the selected categories before campaignprocessing. In one specific embodiment, the Sales Agent 105 can decidewhether to remove certain keywords from the selected categories, orsuggest new keywords to be included in your campaign.

For example, in the Category “Apparel” listed in the “Category” Column3032 of the “Campaign List” Box 3029, the Associated Keywords “BoysApparel”, “Girls Apparel” . . . and “Crew Neck” 3033 are listed in the“Keywords” Column 3035. Adjacent this column is a “Suggested” KeywordColumn 3036, which, in this example, contains the suggested keyword “VNeck”.

When keywords are added, in “Add” Box 3037, or removed, by the “Delete”Buttons 3038, only the campaign the selecting Agent 105 is currentlybooking will be affected. Once the modifications are completed or if nomodifications are necessary, the “Book this Campaign” Button 3040 can beselected to continue on to the Campaign Properties page 3041 shown inFIG. 24F.

As shown in these specific implementations, the Campaign Properties page3041 illustrates the selected categories in the “Categories” column 3042together with the corresponding selected keywords in the “Keywords”column 3043. The next adjacent column (i.e., the “Destination Title”column 3045) will allow the selecting Sales Agent 105 to enter a titlein the “Destination Title” Box 3046 and a URL in the “Destination URL”Box 3047 in the “Destination URL” column 3048 for the correspondingkeywords and categories. This URL, of course, is the destination aclient will be directed to when they click on the highlighted ormarked-up keyword.

Upon entering the proper title and URL information, the selecting SalesAgent 105 can update the campaign for the selected category by executingthe corresponding “update” Button 3050. The EZ Manager web applicationwill then advance to the next set of fields for Title and URLinformation input. In one example, as shown in the screen shot of FIG.24G, the title “Neck Ties” has been input in the “Destination Title” Box3046 and the URL “www.neckties.com” in the “Destination URL” Box 3047.Upon updating all the listed set of fields, the “Campaign Properties”Box 3053 will become active as shown in FIG. 24G.

This detail page 3055 allows the selecting Sales Agent 105 to thenconfigure and enter the finer details of the campaign properties such asthe dates of the Campaign, the Number Of Clicks, the Cost Per Click,etc. In one specific embodiment, the Sales Agent 105 may be permitted torun the Ad Campaign for one or all of the Distributor/Publisher Partners108 of the Ad Campaign Provider, and will have access to certainpartners and their respective publishers. Upon selecting a Partner inthe “Partner” Box 3056, all of their respective Publishers 108 whichcampaigns can be booked will be appear or be highlighted in the“Publisher” Box 3057 of the “Campaign Properties” Box 3053. In thisexample, for the Partner “eZula”, their respective publishers include“eZula, Address, DD, Web3K, KaZaA the eAccel”.

In the event that the selecting Sales Agent 105 does not desire to runthe Ad Campaign on all of a Campaign Provider's Publishers, thePublisher's corresponding Selection Box 3060 can be “unchecked.” In oneexample, should all the Partner's Publishers be un-checked in the“Publisher” Box 3057, the corresponding Selection Box 3061 of the“Partner” Box 3056 will become un-checked. Conversely, if one of aCampaign Provider's Publishers is highlighted or checked first in theSelection box 3060 of the “Publisher” Box 3057, the correspondingSelection box 3061 of the Partner in the “Partner” Box 3056 willautomatically become highlighted or checked as well.

Once all the required fields have been properly filled, the selectingSales Agent 105 may activate the Ad Campaign by executing the “ActivateCampaign” Button 3062. The EZ Manager web application then redirects theSales Agent to the Final Confirmation page 3063 shown in FIG. 24H. Thisis the Final Confirmation page 3063 before the Ad Campaign is booked. Ifthe “OK” button 3065 is executed, the Ad Campaign will be booked, andpressing the “back” button will not allow you to make changes to thecampaign. To modify the Ad Campaign, the user would now have to go backto the “Main Menu” of FIG. 24B, and select the “Administrate Campaigns”option.

Referring now to the screen shot of FIG. 24I, after the “OK” Button 3065in Final Confirmation page 3063 of FIG. 24H is presented, a summary ofthe campaign is generated in the “Campaign Summary” page 3066. This pageprovides the selecting Sales Agent 105 with a complete summary of thecampaign they just booked or modified for the Advertiser 102. In the“Category Information” Box 3067, the keywords corresponding to theselected Category may be viewed by selecting the “View Keywords” Button3068.

While a campaign may have already been running for another publisher forthis entire category, the category may be booked again if: the dates ofthe campaign the selecting Sales Agent 105 is booking does not conflictwith previously booked dates, or the Distributors/Publishers 108 theselecting Sales Agent 105 plans to book a campaign for are not alreadybooked for the dates of the campaign.

Accordingly, the available dates are one of the key factors in selectinga campaign so as not to conflict with the dates of other activecampaigns. In the event of a conflict of selected dates with selectedpublisher(s) in the selected category, the EZ Manager web applicationwill inform (and prevent) the selecting Sales Agent 105 from bookingcategories for publishers where conflicts do exist.

In the example of FIG. 24J, for the Super Category “Apparel” and theSub-Categories “Accessories Sunglasses” and “Work Clothes and Uniforms”,a conflict with the selected Partner Publishers is listed for theselected dates. The list of conflicts can be ordered by category, anddescribing which publishers are creating conflicts. In one specificimplementation, the selecting Sales Agent 105 has the option to: use theBack Button 3070 to return to the previous menus and change the dates ofthe campaign; or select one or more of the “Delete From List” buttons3071 to remove the conflicting category or categories from the campaign.Once the “Delete From List” buttons 3071 have been selected, theselecting Sales Agent 105 selects the “Continue” Button 3072 to onlyremove the categories from the campaign for the conflicting publishersonly. In the event that the selected category conflicts with allpublishers, the entire category will be removed from the campaigncompletely.

This selection then redirects the selecting Sales Agent 105 to thescreen shot of FIG. 24K. The Agent is then queried whether to select the“Cancel” button 3073 which will return them back to the previous menu,or to select the “Remove” Button 3075 which will redirect the Agent tothe Final Confirmation page 3063 of FIG. 24H.

As indicated above, one important tool a Sales Agent 105 and/orAdvertising Broker 108 is the click prediction algorithms which areapplied to predict the number of clicks an Advertiser 102 can expect perday in the category from a respective Distributor/Publisher 108. Thisresource enables an Advertiser 108 to better assess the value of theirAd Campaign is a selected Category, and for a selectedDistributor/Publisher partner 108.

These click prediction algorithms essentially attempt to normalize thepredicted (or current) daily number of clicks, for a category, per apublisher based upon the measured historical data for the daily numberof clicks, for that category, and for per publisher. Accordingly, as thehistorical data increases over time, the click prediction algorithmswill deviate less and less, and thus become more accurate.

As set forth below, in general, the Predicted Daily Clicks (PDC) for anEntire Ad Campaign of an Advertiser would be the summation of thepredicted number of clicks per category from each selectedDistributor/Publisher 108. In other words, the PDC is the summation ofthe summation of the predicted number of clicks per category of theselected Distributor/Publisher 108, or

${PDC} = {\sum\limits_{Pubj}{\sum\limits_{Cati}{{Predict}\left( {Cat}_{ij} \right)}}}$

where Predict(Cat_(ij))=the Daily Predicted Number of Clicks perCategory per publisher.

In one specific embodiment, this click prediction applies anormalization algorithm to normalize the predicted daily number ofclicks, for a category, per a publisher based upon the measuredhistorical data for the same. It has been found that the actual measureduse in part depends on a number of variables which are factored into thealgorithm. For example, it has been observed that new Users have agreater tendency to use the Client Application than Users whom have hadthe Client Application installed in their system for some time. Thisgreater use has been measured consistently between about 10% to about100% more, and more particularly about 25% more. To factor this varianceinto the predicted daily number of clicks, for a category, per apublisher, the follow normalization algorithm has been developed asfollows:

${{Predict}\left( {Cat}_{ij} \right)} = {{{HC}_{d}\left( {Cat}_{ij} \right)} \cdot \frac{{\left( {k - 1} \right)U_{present}^{new}} + U_{present}}{{\left( {k - 1} \right)U_{past}^{new}} + U_{past}}}$

where

-   -   HC_(d)(Cat_(ij))=the Normalized Historical Data for the Highest        Click number measured per Category, per Publisher;    -   k=the New User Factor;    -   U_(present)=the current day total number of Users having the        Client Application for the particular Publisher;    -   U_(past)=the past total number of Users having the Client        Application for the particular Publisher the day of the        HC_(d)(Cat_(ij)) calculation;    -   U_((new/present))=the current new number of Users for the        particular Publisher out of U_(present); and    -   U_((new/past))=the past new number of Users for the particular        Publisher out of U_(past).        Accordingly, the Predict(Cat_(ij)) algorithm accounts for        current day use by normalizing the data against the historical        data for use.

As mentioned above, HC_(d)(Cat_(ij)) is the normalized historical dataon the daily number of clicks per category that have been measured (bythe EZ Gateway Complex 210 as will be discussed) for a particularpublisher. This formula, in one specific implementation, centers arounda three to five day period surrounding the day in which the Maximummeasured number of clicks, (Max(clicks_(d)(Cat_(ij)))), were measured inthe selected category for that Publisher 108. By way of example,

${{HC}_{d}\left( {Cat}_{ij} \right)} = {{\frac{1}{2}{{Max}\left( {{clicks}_{d}\left( {Cat}_{ij} \right)} \right)}} + {\frac{1}{2}\left( \frac{{Max}_{- 1} + {Max}_{+ 1}}{2} \right)}}$

when both

${{Max}_{{- 1},}{Max}_{+ 1}} > {\frac{1}{2}{Max}}$

where

-   -   Max(clicks_(d)(Cat_(ij)))=the Maximum measured number of clicks        in the selected category for that Publisher;    -   clicks_(d)=the Raw Historical Data;    -   Max⁻¹=the Maximum measured number of clicks in the selected        category for that Publisher the day before Max was measured; and    -   Max₊₁=the Maximum measured number of clicks in the selected        category for that Publisher the day after Max was measured.

This equation essentially sums one-half of the Max click data andone-half of the average of the Max⁻¹ and the Max₊₁ click data.

If either Max⁻¹ or Max₊₁ is not greater than ½Max, and both

${{Max}_{{- 2},}{Max}_{+ 2}} > {\frac{1}{2}{Max}}$

where

-   -   Max⁻²=the Maximum measured number of clicks in the selected        category for that Publisher two days before Max was measured;    -   Max₊₂=the Maximum measured number of clicks in the selected        category for that Publisher two day after Max was measured,

then

${{HC}_{d}\left( {Cat}_{ij} \right)} = {{\frac{1}{2}{{Max}\left( {{clicks}_{d}\left( {Cat}_{ij} \right)} \right)}} + {\frac{1}{2}\left( \frac{{Max}_{- 2} + {Max}_{+ 2}}{2} \right)}}$

If either Max⁻¹ or Max₊₁, or Max⁻² or Max₊₂ is not greater than ½Max,but at least one of Max⁻¹, Max₊₁, Max⁻² or Max₊₂, is greater than ½Max,then either:

${{HC}_{d}\left( {Cat}_{ij} \right)} = {{\frac{1}{2}{{Max}\left( {{clicks}_{d}\left( {Cat}_{ij} \right)} \right)}} + {\frac{1}{2}\left( \frac{{Max}_{{\pm 1}/2} + {Max}_{{\pm 2}/1}}{2} \right)}}$${else},{{{HC}_{d}\left( {Cat}_{ij} \right)} = {{\frac{1}{2}{{Max}\left( {{clicks}_{d}\left( {Cat}_{ij} \right)} \right)}} + {\frac{1}{2}\left( \frac{{Max}_{x} + {Max}_{x}}{2} \right)}}}$

where x=1, −1, 2 or −2 days.

When none of Max⁻¹, Max₊₁, Max⁻² or Max₊₂ is greater than ½Max, then

HC _(d)(Cat_(ij))=Max.

In the situation where no historical data is present in a selectedcategory for a selected Publisher, the data from another publisher canbe applied to predict the number of clicks, and then normalized to thenumber of Users for the original selected Publisher.

These calculations can be performed daily for current updates. Aspreviously indicated, The Client Application logs the data where aClient has been, and when they click on the marked-text. This loggeddata is then directed to the EZ Admin Component 208 of the Server System200 for data processing. Thus, for every category the predicted dailyclicks number per publisher can be calculated in a batch programnightly.

By way of example, in one selected category for one Publisher, supposeMax(clicks_(d)(Cat_(ij)))=40 clicks; Max⁻¹=21 clicks and Max₊₁=25clicks, using:

${{HC}_{d}\left( {Cat}_{ij} \right)} = {{\frac{1}{2}{{Max}\left( {{clicks}_{d}\left( {Cat}_{ij} \right)} \right)}} + {\frac{1}{2}\left( \frac{{Max}_{- 1} + {Max}_{+ 1}}{2} \right)}}$

then HC_(d)(Cat_(ij))=31.5. Furthermore, suppose for this Publisher:Upresent=200 Users; Upast=150 Users; U(new/present)=15 New Users; andU(new/past)=5 new Users. Applying a new use factor of 0.25 (i.e., 25%),in the above-mentioned algorithm:

${{Predict}\left( {Cat}_{ij} \right)} = {{{HC}_{d}\left( {Cat}_{ij} \right)} \cdot \frac{{\left( {k - 1} \right)U_{present}^{new}} + U_{present}}{{\left( {k - 1} \right)U_{past}^{new}} + U_{past}}}$

then Predict(Cat_(ij)) is predicted to be 40.65 clicks per day for oneselected category for one Publisher.

In accordance with another specific embodiment, two other sets ofadjustments to the Predicted Click Number Predict(Cat_(ij)) aredesirable to further refine the click prediction. The first set ofadjustments are “Batch Adjustments” which essentially are applied toadjust the Predict(Cat_(ij)), and the second set of adjustments are“Runtime Adjustments” which are applied to adjust the total number ofclick in a campaign based on the user selection in runtime.

The two “Batch Adjustments, by way of example, include a “Last Used”Factor (L) and a Seasonal Factor (S). Regarding the “Last Used” Factor(L), it has been observed that repeat Users whom have already viewed orseen the highlighted Keywords will generally not “click-on” the Keywordagain. As the Users “tire” from viewing the highlighted Keywords again,the Predict(Cat_(ij)) needs to be factored down to compensate. Forexample, if a category had been used less then 14 days ago, the “LastUsed” Factor (L) to be multiplied to the Predict(Cat_(ij)) is 0.9. Incontrast, if the category had been used between 14 and 28 days ago, L isdesignated a factor of 0.95. Otherwise no factor may be used.

Turning now to the Table of FIG. 23, an example of Seasonal Factors (S)are illustrated for each month for a plurality of Categories. Again,using historical data, seasonal variations have been observed dependingupon the Category. For example, the Automotive Category, it has beenobserved that the interest in this sector tends to increase in thesummer months, have a factor of over 1, and tends to decrease in thewinter months, having a factor of under 1. Using the table to find thehistorical factor (S_(past)) and the current factor (S_(present)), thevalue Predict(Cat_(ij)) can be multiplied by the ratioS_(present)/S_(past) to determine the Seasonal Factor (S). Accordingly,depending upon the season of the campaign, this factor compensates forthe seasonality.

The “Runtime Adjustments”, as mentioned above, are adjustments madebased on the length of the Ad Campaign and categories selected. Oneruntime adjustment is a “Category Competition Adjustment Factor (C)”which is applied to adjust when there is Keyword or Category competitionwithin a Category or Super Category. When Keyword belong to the sameCategory, or when Categories belong to the same Super Category, it isobserved that these Keywords and Categories compete with one another forclicks. Hence, when there are common Keywords in the same Category, forinstance, the predicted click performance might be less the predicted.Again, using the historical factor (C_(past)) and the current factor(C_(present)), the value Predict(Cat_(ij)) can be multiplied by theratio C_(present)/C_(past) to determine the a Category CompetitionAdjustment Factor (C).

Another “Runtime Adjustment”, is applied when the Total Number of Clicks(Tc) are predicted from the entire length of an Ad Campaign in aselected Category for a selected Publisher. Depending upon the length ofthe campaign, there are generally considered two forces which oppose oneanother, based upon length of the campaign: the “Diminishing reaction”force and the “Rapid Growth in User Base” force. Regarding the latterforce, in longer Ad Campaigns, more clicks are generally observed at thebeginning period of an Ad Campaign and then the amount of clicks per daydiminishes progressively. Thus, the “Diminishing reaction” force takesthis into account.

Briefly, the “beginning period” of an Ad Campaign is considered about 10days of the campaign run length This period may vary of course.

In the opposing “Rapid Growth in User Base” force however, the growthrate of the User Base of the Client Application is taken into account aswell.

Accordingly, based on the duration of the Ad Campaign, the TotalPredicted Number of Clicks in the selected Category for the selectedPublisher, for the duration of an entire Ad campaign is adjusted asfollows:

T _(C)=(D _(C))(Predict(Cat_(ij)),

when D_(C)<10, where D_(C) is equal to the duration of the Ad Campaignin Days, and Predict(Cat_(ij)), of course, is the predicted number ofclicks in a selected Category for a selected Publisher with theabove-mentioned factors and adjustments taken into account.

When D_(C)>=10, then T_(C) will be determined by the following equation:

T _(C)=10(Predict(Cat_(ij)))+Predict(Cat_(ij))(D _(C)−10)(1−½k(D_(C)−10)),

where k=a Daily Click Reduction Factor.

In one embodiment, k=about −½% which essentially means that the “Growthof the User Base” force, at this time, has a greater significance than“Diminishing Reaction” force. As the growth of the Client Applicationmatures in time and use, k about 1%.

The above-mentioned Factors and Adjustments are just some of theconsiderations that can be taken into account when predicting the numberof clicks for an Ad Campaign. It will be appreciated that many otherfactors and adjustments can be added, subtracted and/or mixed andmatched depending upon the circumstances. Moreover, as the historicaldata for each Super Category, Category, Keyword and/or Factors andAdjustments are recorded and developed, the click predictions willbecome more refined and accurate.

EZ Gateway Application

Referring back to FIG. 2, the Gateway Complex 210 includes the EZGateway component 204 that is an extranet system provided forAdministrators of the Ad Campaign Provider, and/or for specificPublishers which allows them to manage that flows to the ClientApplications. This interface Application provides access to all thecurrent Ad Campaigns, and enables the Administrator to: add or deletePublishers from an Ad Campaign; manage the data of an Ad Campaign; andset of change the basic rules and restriction for an Ad Campaign,Publishers, Categories, and Keywords (Display Strings) for the campaign.

Upon logging into the EZ Gateway Application, the Administrator isdirected to the Main Page 4000, shown in FIG. 25A, which opens bydefault. In the “Campaign” column 4001, all the active and inactive AdCampaigns are listed in order of date in which the campaign was created.A “Status” column 4002 is provided which indicates the current Status ofthe Ad Campaign. Briefly, “Locked” Status Indicator indicates that thecampaign is locked to receive any new information at this time and thiswill be the case until the data and information that was already addedwill be processed. “Editable & Uploadable” indicates that the campaignis open to any type of management activity. The Status Indicator “CommitPending” and “Commit Pending II” indicate that the campaign has somechanges and new data/information and that these changes are now pendingprocessing on the server.

A “Last Modified” column 4003 indicates the date and time of the lastmodification to the corresponding Ad Campaign, while a “Initial Upload”column 4005 indicates the date the corresponding Ad Campaign commenced,along with the processing time which is the time that the new campaignwas processed and the data went to the CDN server for the clientapplication to update with. This is the official time that the campaignhas begun. Finally, an “Active Publisher” column 4006 indicates all theactive Publishers 108 that are currently running the corresponding AdCampaign.

Upon selecting an Ad Campaign in the “Campaign” column 4001 of the MainPage 4000, the EZ Gateway Application will direct the Administrator tothe “Campaign Properties” page 4007 of FIG. 25B. Four Main FunctionButtons are provided in this page 4007: an “Update Campaign” Button4008; an “Edit Campaign” Button 4009; a “Set Relationship” Button 4010;and a “Delete Campaign” Button 4011. These function buttons are selfexplanatory, and will be described in greater detail below as well.

Below the Main Function Buttons 4008-4011 are two text field boxes 4012,4013 which allow the Administrator to change the Campaign Name (e.g.,BMG0605_public) and the Campaign ID (e.g., 254). The Campaign ID isassigned to an Ad Campaign to distinguish this campaign from all othercampaigns.

When an Administrator edits an existing Ad Campaign, the “Edit Campaign”Button 4009 is selected which directs the EZ Gateway Application to the“Edit Campaign” page 4015 of FIG. 25C. This page 4015 allows thatAdministrator to scroll through the Super Categories and Sub-Categoriesfor the selected Ad Campaign (BMG0605_public in this example). In the“Edit Category” column 4016, a corresponding Category may be selectedwhich enables the Administrator to manage the properties of the selectedCategory. Similarly, the “Edit Keywords” column 4017, corresponding tothe respective Category, allows the Administrator to manage the keywordsand their properties per category.

Clicking on one of the Categories in the “Edit Category” column 4016 ofthe Edit Campaign” page 4015 directs the EZ Gateway Application to the“Category Properties” page 4018 of FIG. 25D. As mentioned, this screenpage enables the Administrator to manage the properties of each categoryof an Ad Campaign. In a “Limit Per Page” box 4020, an Administrator canlimit the number times that Keywords (the same or different) arehighlighted in this particular Category per page. Thus, in this example,should one web page contain thirteen (13) occurrences of the same and/ordifferent Keywords from a single Category, only the first three (3)occurrences of the Keywords from that Category will be highlighted. ThisKeyword occurrence limit is implemented so that not too many of the sameCategory Keywords will be highlighted which in effect would diminishtheir effectiveness. These three (3) highlighted occurrences can also bespread apart, such as a the beginning, the middle and the end of thepage.

The highlighting priority of the Keywords from this Category may bemanaged from the “Priority” box 4021. Briefly, as explained in greaterdetail above, setting the priority of the Keywords in the correspondingCategory, potential highlighted Keywords on a web page can be sorted inthe order of the priority. Those Keywords in the Category with thehigher priority (100 being the highest and 1 being the lowest) will behighlighted first. The priority, in part may be determined by the CostPer Click of the keyword.

Another use for the priority, which again will be explain in detailbelow, is to designate the cycle type or Context markup Mode of theCategory. For example, if the priority is set to 1, then this Categorywill be part of the highlights in cycle type “MARKUP ALLI” only, and notin cycle type “MARKUP HIGH PRIORITY”. In contrast, if the priority isset to 100, then the Category will be part of the highlights in anycase, as described in detail above.

In the “Select a New Site” box 4022 or the “Add a New Site” box 4023 ofthe “Category Properties” page 4018, positive or negative restrictionsfor selected web pages can be set for the selected Categories. Thisinterface enables the Administrator to customize the specific Keywordscontained in the corresponding Category to only highlight in one or morelisted web pages, or in the alternative, to not be highlighted in a theselected Category. For example, by checking the “Site Logic” box 4025,the Keywords from the “Music—Styles Classical” Category will not behighlighted when the Client is at the selected web page, whileUnchecking the box 4025 is applied when these Keywords are designated toONLY highlight when the Client is at the listed web pages.

Referring back to the Edit Campaign” page 4015 of FIG. 25C, clicking onone of the Keywords or Display Strings in the “Keywords Category” column4017 directs the Administrator to the “Display Strings” page 4030 ofFIG. 25E. For the selected Category, which in this example is“Music—Styles Classical”, the corresponding Keywords are listed in the“Display Strings” column 4031. A “Delete” column 4032 is provided withcheck boxes 4033 to delete the corresponding display strings.

Continuing to scroll to the bottom of this Display Strings” page 4030 isan “Add Keyword” box 4035, shown in FIG. 25F. This component allows theAdministrator to add any Keyword or Display String in the “DisplayStrings” box 4036 for the corresponding Category of the Ad Campaign. Adesired Title for the Display String can be selected from an existingtitle in the “Existing Title” Box 4037, or in a new Title may be inputin the “New Title” box 4038. The URL destination may be managed in the“URL” box 4040. Upon completion, the “Add New” button 4041 is executed.

As mentioned, the “Display Strings” page 4030 of FIG. 25E enables theAdministrator to manage the properties of each Keyword. Clicking one ofthe Keywords listed in the “Display Strings” column 4031 directs theAdministrator to an “Edit Display Strings Properties” page 4042 of FIG.25G. For example, the Current Title “CLICK for POP music at the BMGMusic Club!” for the Display String “Sade” can be changed in the “ChangeCurrent Title” box 4043, or in the changed to another existing title forthis Campaign in the corresponding box 4045. The URL destination may bemanaged in the “URL” box 4046, while the Cost Per Click can be changedfrom the “$CPC” box 4047.

Regarding the “Negatives” box 4048, briefly, this input allows theAdministrator to fine tune the context of the selected Keyword withinits surrounding text. For example, if the display string “credit card”has the following negative keywords associated with it: “bad, APR,free”, then in the following sentence “credit card” will not behighlighted: “Combat your bad credit and get a credit card with freeAPR” since the negative keywords surround the display string and thusindicate that the display string does not appear in the right context onthis page.

Lastly, selecting the “Append” box 4050 appends the current, selected orchanged Title to the Display String. For example, if the Title werechanged to “BMG.com”, selecting the “Append” box 4050 would furtheralter the new Title to be “Sade@BMG.com”.

Referring back to the “Edit Campaign” page 4015 of FIG. 25C, when anAdministrator desires to add, change or delete Publishing partners ofthe Ad Campaign Provider for this existing Ad Campaign, the “SetRelationship” Button 4010. The EZ Gateway Application then directs theAdministrator to the “Set Campaigns—Publishers Relationship” page 4051of FIG. 25H. Essentially, this interface allows the Administrator tomanage the relationship of the selected Ad Campaign (BMG0605_public inthis example) with existing Publishers 108 listed in the “Publisher”column 4052.

Adjacent the “Publisher” column 4052 is the “Set Publisher” column 4053which enables the Administrator to “set” or “reset” the selected AdCampaign for the corresponding Publisher. By “Checking or “Unchecking”the “Yes” box 4055, the corresponding Publisher 108 will be added ordeleted from this Ad Campaign.

“Status” column 4056 indicates the whether the corresponding Publisher108 is running this Ad Campaign, while the “Version” column 4057indicates the data version for the corresponding Publisher. This versionnumber is the version for this specific publisher and is not unique forthis campaign. The campaign has another version number which isindicated in FIG. 25B.

In the “Major” column 4058, the Administrator can indicate whether thisdata update for the corresponding Publisher 108 should be a “Major” or a“Minor” update. These definitions of the “Major” and “Minor” change tothe Ad Campaign are mentioned above.

Listed above the table is pertinent Ad Campaign information includingthe Campaign Name and the Campaign ID. Also included is the CampaignVersion number which indicates the version of that data for thisspecific campaign.

Once the selected Ad Campaign has been edited or modified, referringback to the “Edit Campaign” page 4015 of FIG. 25C, The instructions andmodified information will reside in the database until the time ofprocessing the changes arrives. At that time EZ Admin Server with thedatabase will process the modified data and prepare it for an update.Clicking button 4008 on page 4007 directs the Administrator to the“Upload Data” page 4060 of FIG. 25I which enables them to upload new orupdated date corresponding to the selected Ad Campaign. The “SelectDisplay Strings file” box 4061 is provided to update the general datafiles containing the categories, keywords, titles, URLs, CPC, Matchtypes, and negative keywords data which were added or updated generallyin the “Display Strings” page 4030 of FIG. 25E, the “Add Keyword” box4035 of FIG. 25F, and/or the “Edit Display Strings Properties” page 4042of FIG. 25G. By clicking on the top “Browse” button 4062, thecorresponding general data file can be selected. Regarding the “SelectCategories file” box 4063, the category data files can be updated. Thesefiles contain the special parameters of a category such as those thathave been added or updated in the “Category Properties” page 4018 ofFIG. 25D. Again, by clicking on the bottom “Browse” button 4065, thecorresponding category data file can be selected.

In the “Setting” box 4066 below, the Administrator can replace the“Entire Set” of records with the updated the selected general data fileand/or the selected category data file, or can add these files to thealready existing files for the corresponding Ad Campaign. In essencethis is making a choice between a major or minor update.

Referring now to FIG. 25J, a “Restricted Sites” page 4067 is providedwhich sets a global restriction of the listed sites for all Publishers.This page is access through the link on the top left side of page 4000.By adding a web site to the list of the “Restricted Sites” column 4068,the Ad Campaign Provider's mark-ups will not occur, globally, for anyPublisher, and for any Ad Campaign on the users PCs. A “Delete” column4070 is provided with check boxes 4071 to un-restrict previouslyrestricted web pages.

The Client Application

Referring now to FIG. 5A, a portion of a client system 500 is shownwhich has been configured to implement the technique of the presentinvention in accordance with a specific embodiment. As shown in theexample of FIG. 5A, the client system 500 may include a browserapplication 502 which displays a browser window on the display of theclient system. The browser window may include a plurality of frames 504,wherein each frame may be used to display text and/or graphics to theend user. As described in greater detail below, one aspect of thepresent invention provides the ability for selected text (specified bythe campaign provider and/or advertiser) to be temporarily dynamicallyhighlighted and/or marked-up on the user's computer system. Moreover,according to at least one embodiment, the dynamic mark-up and/orhighlighting of information in the browser window may be performedautomatically and transparently from the perspective of the end user.

According to a specific embodiment, the campaign provider downloadcomponent which is downloaded to the client system 500 may include aplurality of files and/or other components which may be executed on theclient system in order to implement various aspects of the presentinvention. As shown, for example, in FIG. 5A, the campaign providerdownload component (herein referred to as the “download component”) mayinclude a MAIN application 520, a browser agent 506, and a plurality offrame agents 510. In a specific implementation, the MAIN application 520may be configured to initiate at startup. The MAIN application mayautomatically load the browser agent 506 when the browser application isinitiated, for example, by raising a hook for attaching the browseragent to the browser application. In one implementation, the browseragent may be configured as a plug-in which is automatically loaded eachtime the browser application is initiated. Various functions of thebrowser agent may include, for example, registration for evennotification (e.g. quit, begin navigate, document complete, etc.),initiation of frame agents, etc. According to one implementation, boththe browser and frame agents may be implemented as objects in a DLLfile.

As shown in the embodiment of FIG. 5A, the MAIN application 520 mayinclude a plurality of components for performing various aspectsrelating to the textual mark-up technique of the present invention. Forexample, the MAIN application 520 may include a Contextual AnalysisEngine (CAE) 522 for performing search analysis of keywords and/or datastring text. A more detailed description of the search analysisprocedure which may be implemented by the Contextual Analysis Engine isprovided below, with reference to FIGS. 16A and 16B of the drawings.

Additionally, as shown in FIG. 5A, the MAIN application 520 may alsoinclude additional components such as, for example, a ServerCommunication Component (SCC) 524, and a User Behavior AnalysisComponent (UBAC) 526. Functions of the Server Communication Component524 may include, for example, data updates, automatic retrieval andupdates of download components and update files, maintaining andtransmitting customer tracking information to the EZ server complex,etc. Such tracking information may include, for example, informationabout the end user's activity such as page views, keywords clicked,markups viewed, pop-ups viewed, etc. The User Behavior AnalysisComponent 526 may be used to monitor the end user's click behavior inorder to dynamically adjust the quantity of markup context in thedocument displayed on the user's computer system. In this way, thetechnique of the present invention is able to react differently todifferent types of users in terms of the keywords which are highlightedor marked up. For example, for users which click relatively frequently,fewer keywords may be highlighted or marked up, whereas, for users whichclick less frequently, a greater number of keywords may be highlightedor marked up.

It will be appreciated that the technique of the present invention maybe used to implement a variety of different audio, visual and/or textualmarkups of document context displayed on the end user's computer system.For example, plain text may be marked up or highlighted.

According to a specific embodiment, the marked up text may also haveassociated with it additional caption information (e.g. tool tipcaptions) which provide additional information relating to the marked upcontext portion(s). Additionally, one or more pop-up windows may beconfigured to be automatically displayed to the user based upon thecontextual information contained in the document window. For referencepurposes, each or any of the above-described document display markupsmay be commonly referred to as “marked up document context” or “documentcontext markup”.

As shown in FIG. 5A, the client system 500 may also be configured toinclude one or more frame agents 510. In a specific implementation, aseparate frame agent (e.g. 510 a, 510 b, etc.) may be instantiated foreach respective frame (e.g. 504 a, 5054 b, etc.) in the browser window502. In the embodiment of FIG. 5A, each frame agent may also beconfigured to instantiate a respective search pipe 530 for communicatingwith MAIN application 520.

FIG. 5B shows a block diagram of a frame agent 510 a in accordance witha specific embodiment of the present invention. In one implementation,the browser agent 506 may be responsible for instantiating the frameagent 510 a. As shown in FIG. 5B, the frame agent 510 a may include aplurality of components including, for example, a Markup Component (MC)552, an Information Tracking Component (ITC) 554, etc. In oneimplementation, the Markup Component 552 may be responsible fordetermining and implementing markups of document context. For example,the Markup Component 552 may be responsible for determining whichkeywords are to be marked up in a selected browser frame, and may alsobe responsible for performing implementing markup of the identifiedkeywords. A more detailed description of a markup procedure performed bythe Markup Component 552 is provided below with reference to FIG. 19 ofthe drawings.

The Information Tracking Component 554 may be used to manage and loguser tracking information such as, for example, number of page views,type of page views, markup information (e.g. identity of keywords whichwere marked up, quantity of markups, etc.), user ID, popup adsinformation (impressions and clicks), etc.

FIG. 6 shows a flow diagram illustrating how various components of theclient system interact with each other to implement the various aspectsof the present invention, in accordance with a specific embodiment. Theflow diagram of FIG. 6 will now be described in greater detail withreference to the various components illustrated in FIGS. 5A and 5B ofthe drawings.

Initially, it is assumed at (2) of FIG. 6 that a document complete eventhas occurred for a document such as, for example, an identified frame ina browser window. Typically, the document complete event indicates thatthe identified document has finished downloading all its data. Thebrowser 502 notifies (2) the browser agent 506 of the document completeevent for the identified document. Upon receiving the document completeevent, the browser agent initiates (3) a frame agent for the identifieddocument (e.g. frame) which, according to a specific example, may beidentified using a frame ID). The frame agent 611 then retrieves (4) thedocument context from the identified frame, processes (5) the retrievedcontext, and stores (5) the processed document context in a specificfile in the shared memory. According to a specific implementation,processing of the document context may include, for example, parsing thedocument context out of the HTML into individual lines (separated, forexample, using carriage returns, links, or other information), trimmingleading and trailing spaces (e.g. between lines), etc.

At (6) a search pipe is instantiated between the frame agent and MAIN520. Thereafter, the file name or location of the stored documentcontext may be passed (8) by the frame agent to the MAIN application520. The MAIN application may then initiate (10) a search analysisprocedure on the stored document context associated with the specifiedfile name. According to a specific implementation, the search analysisprocedure may be implemented using the Contextual Analysis Engine 522.During the search analysis procedure, the Contextual Analysis Enginesearches for key terms in the document context using data downloadedcampaign described previously in FIG. 4 of the drawings. Additionally,as described in greater detail below, the MAIN application 520 mayperiodically initiate a User Behavior Analysis Procedure (described, forexample, in FIG. 12) for determining various aspects of the user'sbrowsing and click behavior.

Once the CAE 522 has finished implementing the search analysis procedurefor the identified document context, its signals (14) the frame agentthat the search analysis has been completed. Thereafter, the frame agent611 retrieves (16) the search results, and performs (18) a markupanalysis on the search results to determine the appropriate documentcontext to be marked up (e.g. markups, highlights, annotations, pop-ups,etc.).

Once the markup analysis has been completed, the frame agent may thenimplement (20 a) markup of selected context within the identifieddocument to produce the desired markups. In one implementation, the textmarked up in accordance with the technique of the present invention mayhave a visually different appearance than ordinary or conventional linksdisplayed within the document. Additionally, according to at least oneembodiment, the markup information relating to a currently displayeddocument is non-permanent in that, once the user initiates a new pageview, the markup information relating that document will be lost. If theuser subsequently clicks the browser's BACK button in order to view thedocument again, the Search Analysis and Markup Procedures will bere-executed on the document in order to reproduce the markup informationrelating to that document.

Additionally, if desired, the frame agent may also initiate (20 b) apop-up advertisement based upon the context of the identified browserframe. Thus, for example, according to one implementation, thecontextual pop-up advertisement may be based upon the context (e.g.textual context) within the identified browser frame. This techniquedefers from conventional pop-up advertisements which are typicallyinitiated based solely upon a specified URL (e.g. the URL of the currentweb page or the URL of a selected link), and are not based upon thespecific context included within a given web page.

According to a specific embodiment, the contextual pop-ups media featureis based on the ability to identify keywords on the page, classify theminto categories, and using the category assign a matching category to agiven page. In order to illustrate this aspect of the present invention,an example will now be described in which it is assumed that a document(e.g. web page) is displayed on the user's computer system whichincludes the following text: truck, car, vehicle, SUV, sport car. Inthis particular example, the document may be classified as a pagecorresponding to the category name “Auto”. Accordingly, in oneimplementation, it will be appropriate to display information from the“Auto” category to the end user. In this way, the technique in thepresent invention provides a benefit of automatically displayingadvertisements which match specific context of the page or documentsdisplayed to the end user.

In a specific embodiment, the MAIN application 520 may be configured toanalyze a selected document for keywords, categories and/or supercategories in order to find a match for an appropriate pop-upadvertisement or window to be displayed.

According to one implementation, a pop-up campaign may be defined as acampaign which includes a banner (image) that is served from a remoteserver into a browser window that opens on the user's machine. Theclient application (e.g. MAIN) determines if context of the documentmatches a topic of one or more campaigns. If there is a match, a browserwindow may automatically be opened and displayed on the client system.In one implementation, the context of the pop-up browser window may beprovided by a remote server responsible for providing the banner image(e.g. advertisement).

According to a specific embodiment, one or more algorithms may be usedfor determining the most appropriate matching category for the selecteddocument being analyzed. For example, in one algorithm, a variety ofdifferent parameters relating to the current document may be analyzed inorder to determine the most appropriate matching category. For example,the current document may be analyzed and assigned a specific contextscore (CS) that is then compared with specific campaign requirementincluded in the campaign update files. If the context score is greaterthan or equal to a predetermined threshold value TH, then a pop-up ad(or other media type ads) may be displayed. According to oneimplementation, keywords which are identified in different elements ofthe document may be scored appropriately. The cumulative score of allthe keywords that are found may be used to determine the CS value. Ifthe identified keywords match a specific category of an ad campaign, andthe cumulative CS value is above the threshold for that campaign, then apop-up advertisement for that campaign may be displayed. Further,according to one implementation, different types of context within thedocument (e.g. document title, Meta keywords, Meta information, documenttext, etc.) may be weighted differently to emphasize each type'sparticular relevance. If more than one advertisement is associated witha particular campaign, selection of the appropriate advertisement may bebased upon different mechanisms such as, for example, assigned priority,round robin, relative age, etc.

Additionally, as shown at 22 of FIG. 6, the frame agent may alsomaintain and log tracking information such as, for example, the numberof impressions and/or pop-ups displayed on the client system, the numberof markups displayed, the number and type of page views displayed, etc.In a preferred implementation, such tracking information does notinclude personal or private information relating to the end user,thereby assuring the user's privacy. According to a specificimplementation, the tracking information may be stored locally on theclient system. After a sufficient quantity of the tracking informationhas been collected (e.g. every 30-40 page views), the logged trackinginformation may be reported (24) at selected intervals to the MAINapplication 520, which then forwards to (26) the logged tracking and/orreporting information to the EZ Server System 200 (FIG. 2).

It will be appreciated that, according to a specific embodiment,multiple threads of the flow diagram of FIG. 6 may be implemented foreach frame identified in the browser window or other document window.Moreover, according to different embodiments, each thread may beimplemented either serially or in parallel with each other. In this way,according to the latter embodiment, document context markup may beperformed on a plurality of frames in the browser window simultaneously.

FIG. 7 shows a specific embodiment of a flow diagram illustrating howvarious information flows are passed between the client system and theserver system of the present invention. Initially, at (30) it is assumedthat the user has clicked or selected a particular portion of text whichhas been marked up in accordance with the technique of the presentinvention. According to at least one embodiment, when the user clicks ona particular portion of marked up text, a pop-up layer (e.g. dynamicbrowser control layer) may be displayed (31) to the user providing theuser with additional information relating to the topic of the marked uptext portion. An example of one type of pop-up layer is illustrated inFIG. 21 of the drawings. According to specific embodiments, the pop-uplayer may include, for example, one or more links, audio information,video information, and/or textual information.

Assuming that the user selects to click on a mark up in accordance withthe technique of the present invention, the user may then be directed(32) to the EZ Gateway Complex 210. During this process, informationrelating to the link/URL selected by the user (e.g. selected URL,keyword ID associated with the selected URL) may be passed to the EZGateway Complex 210. The EZ Gateway Complex logs (34) the clickinformation, and provides (36) a redirect message to the user's browser,thereby redirecting the browser to the target URL. The browser thensends (38) an HTTP request to the target URL 702. Periodically (e.g.every 24 hours), the EZ Gateway Complex 210 will generate (40) reportinformation based upon the logged click information. Thereafter, thereport information is transmitted (42) from the EZ Gateway Complex 210to the EZ Manager System 202.

FIGS. 8-10 illustrate specific embodiments of data structures which maybe included in the campaign provider download component and/or campaignupdate files which are downloaded to the client system and used forimplementing various aspects of the present invention. For example, asdescribed previously, for example, in FIG. 4, the client system 410periodically downloads update files which include new or updatedcampaign data. Additionally, as described in FIG. 6, the informationincluded in the update files are used by the Contextual Analysis Engine522 to determine specific document context which may be marked up inaccordance with the techniques of the present invention.

According to a specific implementation, the update files which areperiodically downloaded to the client system may include, for example,display string data structures, keyword data structures, and other datacorresponding to one or more campaigns. According to one embodiment, thedisplay string data structures may be characterized by their differenttypes, which may include, for example, category display string datastructures, key phrase display string data structures, title displaystring data structures, site display string data structures, etc. Theupdate files which are downloaded to the client system may be storedlocally such as, for example, in persistent memory and/or volatile (e.g.working) memory.

FIG. 8 shows an entry or record 800 corresponding to a category displaystring in accordance with a specific embodiment of the presentinvention. In the example of FIG. 8, the category display string record800 includes a Category ID field 802, a Category Type field 804, a MaxNumber Of Underlines Field 806, a Category Priority field 808, aCategory Name field 812, a Restricted Site ID field 814, a RestrictionIndicator field 816, etc.

According to a specific embodiment, the Category ID field 802 may beused to identify a specific category (e.g. 304 of FIG. 3) associatedwith specific keywords, key phrases, or titles. In one implementation,the Category ID value may be represented as a 4-byte integer.

The Category Type field 804 may be used for describing the visualdisplay characteristics associated with text or images relating to aparticular category. For example, the category type may specify aparticular color to be used for underlining marked up text, a particularcolor for highlighting marked up text, a particular image to bedisplayed near appropriate marked up text, etc.

The Max Number Of Underlines field 806 may be used to specify themaximum number of underlines or markups which may be performed onkeywords associated with that category (e.g. per browser frame, perdocument, etc.) (e.g. max number of underlines for category=3).

The Category Priority field 808 may be used for prioritizing aparticular category of words to increase the chances of those wordsbeing marked up using the technique of the present invention. Accordingto a specific embodiment, the greater the category priority value, thegreater the chances of words corresponding to that category beinghighlighted or marked up.

The Category Name field 812 may be used to describe a specific nameassociated with a particular category (e.g. “free stuff”).

The Restricted Site ID field 814 may be used to identify specific SiteIDs (e.g. domain names) or groupings of sites which have restrictionsassociated therewith. For example, the Restricted Site ID field 814 mayinclude one or more Site ID values corresponding to specific web pages,and/or one or more Group ID values (where each Group ID represents aplurality of different web pages). The Site ID and Group ID parametersare described in greater detail with respect to FIG. 10.

The Restriction Indicator field 816 may be used for determining the typeof restriction of associated with one or more restricted sitesidentified in the Restricted Site ID field 814. According to a specificimplementation, the Restriction Indicator field may include either apositive value, a negative value, or no data. A negative value may beused to signify that keywords or key phrases associated with thatparticular Category ID are not to be marked up on web pages identifiedby the Restricted Site ID field 814. A positive value in the restrictionindicator field may be used to signify that key phrases or keywordswhich are associated with the particular Category ID are to be marked uponly on web pages identified in the Restricted Site ID field 814. Thus,for example, a negative value in the restriction indicator field may beviewed as a negative restriction, whereas a positive value in therestriction indicator field may be viewed as a positive restriction.

FIG. 10 shows an entry or record 1000 of a site display string datastructure in accordance with a specific embodiment of the presentinvention. As shown in the example of FIG. 10, the site display stringrecord 1000 includes a Site ID field 1002, a Site Name field 1004, and aGroup ID field 1006. In a specific implementation, the Site ID field1002 may be used to identify a particular domain name, or web page, andmay be represented as a 4-byte integer. The Site Name field 1004 may beused to specify the particular domain name or site name associated witha particular Site ID. The Group ID field 1006 may be used to classifymultiple sites into one or more groups. For example, all pornography webpages may be classified using the same Group ID value. Not all Site IDsmay have a corresponding Group ID. According to a specificimplementation, a negative Group ID value may be used to representglobally restricted sites in which no document context markup is to beperformed. This feature is described in greater detail below withrespect to FIG. 15.

FIG. 9A shows an example of a record or entry 900 in a key phrase ortitle display string data structure in accordance with a specificembodiment of the present invention. As shown in the example of FIG. 9A,the key phrase/title display string record 900 may include a pluralityof different fields such as, for example, a Key Phrase or Title ID field902, a Display String Type field 904, a Threshold Value field 906, aMatch/Display Properties field 908, a Display String Text field 912, anAlternate Display String field 914, a Negative Words field 916, a ParentCategory ID field 918, etc. According to a specific implementation,field 902 may be used for storing a Key Phrase ID or Title ID, dependingupon whether the display string record 900 corresponds to a key phrasedisplay string record or a title display string record. In oneimplementation, the identification of display string record 900 aseither a key phrase display string record or title display string recordmay be determined by referencing information contained within theMatch/Display Properties field 908 (described in greater detail below).For illustrative purposes, and in order to avoid confusion, it will beassumed that the displayed string record 900 of FIG. 9A corresponds to akey phrase display string record.

The Display String Type field 904 may be used to control the visualdisplay of the title or key phrase associated with a particular displaystring record. The Threshold Value field 906 may be used for specifyinga minimum threshold value (e.g. minimum threshold percentage value) tobe used for fuzzy match analysis. For example, if a fuzzy match has beenspecified, then the value stored in the Threshold Value field may beused to determine the minimum percentage of matched words to be found inthe document context in order to conclude that a match exists. Thisfeature is described in greater detail below with respect to FIGS. 16Aand 16B.

As shown in FIG. 9A, the display string record 900 may also include aMatch/Display Properties field 908. In a specific implementation, theMatch/Display Properties field may be implemented as an n-bit word whichis used for determining various characteristics relating to the displaystring record. Such characteristics are described in greater detailbelow with respect to FIG. 9B of the drawings.

As shown in the example of FIG. 9A, the display string record 900 mayalso include a Display String Text field 912 which may be used forstoring text (e.g. “credit card”) relating to a particular key phrase ortitle. The Alternate Display String field 914 may be used for specifyingalternate display strings associated with display string record 900. Ina specific implementation, the alternate display string 914 may includeone or more record identifiers (e.g. Key Phrase or Title IDs) associatedwith the display string record 900. For example, the alternate displaystring information may point to title display string records which maybe used for describing the key phase associated with display stringrecord 900.

The Negative Words field 916 may be used to specify one or more“negative” words which, if within a specified proximity to a matcheddisplay string in the document context, would negate markup (e.g. markupand/or highlighting) of the identified document context. This feature isdescribed in greater detail with respect to FIGS. 16A and 16B of thedrawings.

The Parent Category ID field 918 may be used for specifying the CategoryID associated with the key phrase or title corresponding to thatparticular display string record (e.g. display string record 900).

FIG. 9B shows an example of various information which may be storedwithin the Match/Display Properties field 908, in accordance with aspecific embodiment of the present invention. As shown in FIG. 9B, theMatch/Display Properties field 908 may include a Record Classifierportion 908 a, a Display portion 908 b, a Case Sensitive portion 908 c,a Match Type portion 908 d, a For Append portion 908 e, etc.

According to a specific implementation, the Record Classifier portion908 a may be used to specify whether the display string record 900 is tobe treated as a key phase display string or a title display string.According to one implementation, key phrase display strings may be usedwhen performing search analysis of the document context in order togenerated markup text of highlighted text, whereas title display stringsmay be used, for example, for displaying additional information about aparticular keyword or key phrase. According to a specific embodiment,display string text associated with a title display string record may bedisplayed in a pop-up layer (e.g. pop-up window, tool tips, etc.), whichmay be automatically displayed when the user's cursor moves overspecific text and/or objects in the user's display.

The Case Sensitive portion 908 c may be used for specifying whether aparticular match requires case sensitivity. The Match Type portion 908 dmay be used to determine the type of match (e.g. exact or fuzzy) whichis to be in effect for a particular display string record. According toa specific implementation, if the match type portion indicates that anexact match is required, it may be assumed that the threshold value fora match is 100%, regardless of the value within the threshold valuefield 906. Alternatively, if the match type portion 908 d indicates thata fuzzy match is to be in effect, the value of the threshold value field906 may be used for determining the minimum percent threshold valuerequired for a “fuzzy” match.

Additionally, as shown in FIG. 9B, the Match/Display Properties field908 may also include a For Append portion 908 e which may be used toindicate that the title should be appended to the display string text,and the resulting string should be displayed in a pop-up layer or a tooltip.

FIG. 9C shows an example of an entry or record 950 which may be includedin a keyword data structure in accordance with a specific embodiment ofthe present invention. According to a specific implementation, thekeyword data structure may be implemented as a hash table, wherein thekey is the keyword field 952. In the example of FIG. 9C, the keywordrecord 950 includes information relating to a particular keyword 952 andcorresponding Key Phrase ID(s) associated with that particular key work.For example, the keyword field 952 may include a keyword text stringsuch as, for example, “credit”. Portion 954 of the keyword record mayinclude information relating to one or more key phrases which includethe keyword “credit”. Each key phrase may be identified using itsassociated Key Phrase ID. Thus, for example, Key Phrase ID1 954 a maycorrespond to the key phrase “credit card”, Key Phrase ID2 954 b maycorrespond to the key phrase “credit check”, etc. According to aspecific embodiment, the keyword data structure (which is stored locallyon the client system) may include hundreds or even thousands of keywordentries.

It will be appreciated that the various data structures described inFIGS. 8-10 may include multiple records having a formats similar tothose described in FIGS. 8-10. Further, it will be appreciated that inalternate embodiments, one or more of the data structure records mayinclude additional fields for storing additional information, or mayinclude fewer fields than those described in FIGS. 8-10.

Further description of the data structures described in FIGS. 8-10 areprovided below with respect to FIGS. 14 A-D, which provides anillustrative example of how the various data structures may be used forimplementing the technique of the present invention.

FIG. 11 shows a flow diagram of a Client Process Flow 1100 in accordancewith a specific embodiment of the present invention. More specifically,the client process flow 1100 illustrated in FIG. 11 provides a highlevel overview of the various events and/or procedures which occurduring implementation of the document context markup technique of thepresent invention. The flow diagram of FIG. 11 will now be described inbrief detail. In the example of FIG. 11, it is assumed that the clientflow process 1100 is being implemented on a client system such as, forexample, a computer system of an end user which is connected to theInternet.

At 1102, it is assumed that a new page view of a document is beingdisplayed on the client system. In one implementation, the new page viewmay be displayed in an Internet browser window on the client system. Inan alternate embodiment, the new page view may be displayed in a windowwhich is managed by another application on the client computer systemsuch as, for example, a word processing program, etc. Upon completingdownload of the new page, or upon completing the download of context inat least one frame of the new page, various procedures may be initiatedin order to perform the document context markup technique of the presentinvention.

According to one implementation as shown, for example, in FIG. 11, aRestriction Analysis Procedure may be initiated (1104) in order todetermine whether there are any restrictions on Marking up contextcontained in the new page/frame. Thereafter, if appropriate, a searchanalysis procedure may then be implemented (1106) in order to determinewhether the context of the new page/frame includes selected keywordsand/or phrases which have been predetermined by the campaign providerand/or advertiser. Thereafter, a markup procedure may be implemented(1108) for selecting and Marking up (e.g. markup/highlighting) selectedtext within the new page/frame. Additionally, as shown in FIG. 11, aUser Click Behavior Analysis Procedure may be implemented (1110) inorder to analyze specific browsing behavior patterns (e.g. clickbehavior) of the user, which may then be used to determine the degree ofcontext markup to be implemented on the new page. According to aspecific implementation, the User Click Behavior Analysis Procedure maybe an ongoing process which runs concurrently with one or more of theother procedures shown in FIG. 11.

FIG. 12 shows a flow diagram of a User Click Behavior Analysis Procedure1200 in accordance with a specific embodiment of the present invention.According to specific implementations, the User Click Behavior AnalysisProcedure 1200 may be implemented by the User Behavior AnalysisComponent 526 of FIG. 5A. The User Behavior Analysis Component 526 maysometimes be referred to as a cycling component.

One function of the User Click Behavior Analysis Procedure 1200 is toanalyze the end user's click behavior when browsing through web pagecontext. For different types of user click behavior patterns, thetechnique of the present invention may be configured to reactdifferently in terms of the keywords which are highlighted in the users'browser windows. For example, for user's which click relatively lessfrequently, a relatively greater number of keywords may be marked up orhighlighted in order to elicit more clicks from that user. For user'swhich click relatively more frequently, fewer keywords may behighlighted/marked up, for example, in order to elicit higher returnsfor those keywords.

According to at least one implementation, the user's click behavior maybe periodically monitored in cycles corresponding to differentparameters. At the end of each cycle, the user's click behavior for thatcycle is classified, and based upon this classification, a particularmarkup mode may be selected relating to the quantity or degree of markedup document context which will be implemented on text displayed on theuser's computer system.

Initially, as shown at 1202 of FIG. 12, a default mode may be set whenthe User Click Behavior Analysis Procedure is initiated. In accordancewith one embodiment, at least 2 context markup modes may be definedrelating to document context markup. A first context markup mode may bereferred to as MARKUP HIGH PRIORITY mode in which only high prioritykeywords are marked up on the user's display screen. A second mode maybe defined as an MARKUP ALL mode in which all identified keywords aremarked up/highlighted on the user's display screen. Thus, for example,at 1202, the default mode may be set to the MARKUP ALL mode. At 1203,the start of an analysis cycle is initiated. The User Click BehaviorAnalysis Procedure then gathers (1204) user behavior information suchas, for example, the cycle start time, elapsed time since the start ofthe cycle, total page views presented (during that cycle), net pageviews presented (excluding restricted pages), total marked views (e.g.total page views with marked up context), etc. In a specificimplementation, at least a portion of the collected user behaviorinformation may be stored using hardware such as, for example, countersor registers.

At 1206, a determination is made as to whether a check point time hasbeen reached. Periodically (e.g. every 30-45 page views), a check pointtime may occur in order to determine (1208) whether the end of the cyclehas been reached. According to specific implementations, the end of thecycle may occur when at least one of the parameters associated with theuser behavior information exceeds a predetermined limit value. Forexample, in one implementation, cycle limit values may be assigned todifferent parameters of the user behavior information, as shown in thefollowing table:

PARAMETER CYCLE LIMIT VALUE Total Page Views 150 Net Page Views 100Total Marked Views 150 Cycle Start Time 14 days

According to a specific embodiment, the end of the cycle may occur whenone or more of the above parameters meets or exceeds its associatedcycle limit value. If it is determined that the end of the cycle has notbeen reached, then the User Click Behavior Analysis Procedure continueswith gathering user behavior information for the current cycle.

Once it has been determined that the end of the cycle has been reached,the user's click information may then be used to classify (1210) theuser as either a high or a low click user. According to a specificimplementation, a high click user may be defined as a user who clicks atleast n times during the cycle and a low click user may be defined as auser who clicks fewer than n times during the current cycle. In aspecific implementation, only relevant click information (e.g. clicks ondocument context Marked Up in accordance with the technique of thepresent invention) is used when performing the user click behavioranalysis. According to a specific implementation, the value n may be setequal to any integer greater than zero, such as, for example, n=1. Itwill be appreciated, however, that the definitions of a high click andlow click user may vary depending upon desired design preferences andperformance. Moreover, such variations will generally be known to onehaving ordinary skill in the relevant art. Additionally, according to aspecific implementation, the value n may be a predetermined value, ormay be dynamically determined based upon a specified formula (e.g.user's average number of clicks per cycle minus a predeterminedconstant).

As shown in the embodiment of FIG. 12, if it is determined that the userhas been classified as a high click user, then the current mode may beset to MARKUP HIGH PRIORITY mode, wherein only high priority keywordsare marked up/highlighted for display to the user. If, however, it isdetermined that the user has been classified as a low click user then,the current mode may be set to MARKUP ALL mode, wherein all appropriatekeywords identified in the document context may be markedup/highlighted. Once the new context markup mode has been set, it willremain the active mode until the completion of the next cycle.Additionally, according to a specific implementation, changes of thecontext markup mode (over a selected time period) may also be tracked,recorded, and reported to the campaign provider for use in determiningthe effectiveness of the User Click Behavior Analysis Procedure and/orappropriate parameter values such as, for example, cycle limit parametervalues, high click and low click user definitions, etc. Before the startof the next cycle, the user behavior information counters/registers maybe reset (1216). Thereafter, the start of a new cycle may be initiated(1203).

In order to achieve a more thorough understanding of the various aspectsof the present invention, the document context markup technique of thepresent invention will now be described by way of a specific examplewhich is illustrated in FIGS. 13 and 14A-D of the drawings.

FIG. 13 shows an example of a browser window 1300 which may be used forillustrating various aspects and features of the present invention. Asshown in the example of FIG. 13, the browser window 1300 includes a URLfield 1302, and a plurality of tiled browser frames 1304. Each browserframe may include its own, respective context. For example, as shown inFIG. 13, browser frame 1304 a includes a line of text which reads “Iused my credit card today”. As will be described in greater detailbelow, the context of browser frame 1304 a (namely the line “I used mycredit card today”) will be analyzed for keywords and/or key phrases andmarked up (e.g. marked up, highlighted, and/or annotated) in accordancewith the technique of the present invention.

In order to perform the keyword search analysis and document contextmarkup aspects of the present invention, it is assumed that the campaignprovider download component and campaign update files have beendownloaded and installed on the user's computer system (herein referredto as “the client system”).

FIGS. 14A-D illustrate a specific example of various data structures andinformation provided in campaign update files which have been downloadedto a client system such as that shown, for example, in FIG. 5A. In aspecific embodiment, the data structures of FIGS. 14A-D may beimplemented as hash tables which may be stored within the memory of theclient system.

It will be appreciated that the information illustrated in the datastructures of FIGS. 14A-D represents examples of the various types ofcampaign data which may be downloaded to the client system. Further, itwill be appreciated that the information shown in FIGS. 14A-D has beenedited to omit confusing information (which may also be stored withinthe various data structures). The data structures of FIGS. 14A-D mayinclude additional information not illustrated in FIGS. 14A-D.

FIG. 14A shows an example of an entry 1420 included in a Keyword HashTable that has been stored on the client system. In the example of FIG.14A, the Keyword Hash Table entry 1420 includes information specifying aparticular keyword 1402 (e.g. “credit”), and associated Key Phrase/TitleID values 1404 (corresponding to entries in the Title/Key Phrase HashTable of FIG. 14B). Additional elements relating to Keyword Hash Tableentries have been described previously with respect to FIG. 9C of thedrawings.

FIG. 14B shows an example of information which may be included within aTitle/Key Phrase Hash Table 1440. Each entry (e.g. 1442, 1444, 1446) inthe Title/Key Phrase Hash Table 1440 may correspond to a display stringentry or record described previously with respect to FIG. 9A. However,for purposes of illustration, and in order to avoid confusion, only aportion of the information included within each title/key phrase displaystring record is shown in FIG. 14B.

FIG. 14C shows a specific example of a Site Hash Table 1460 which may beused for illustrating various aspects of the present invention. Eachentry (e.g. 1462, 1464) in the Site Hash Table 1460 may correspond to asite display string record described previously with respect to FIG. 10.

FIG. 14D shows an example of a record 1480 included in a Category HashTable of the present invention. According to a specific embodiment, theCategory Hash Table record 1480 may correspond to a category displaystring record described previously with respect to FIG. 8. However, forpurposes of illustration and in order to avoid confusion, portions ofinformation typically included in the category display string record ofFIG. 8 have been omitted from the record 1480 illustrated in FIG. 14D.

FIG. 15 shows a flow diagram of a Restriction Analysis Procedure 1500 inaccordance with a specific embodiment of the present invention. In aspecific implementation, the Restriction Analysis Procedure 1500 may beimplemented and managed by the Contextual Analysis Engine 522 of FIG.5A. One function of the Restriction Analysis Procedure is to determinewhether a particular document or web page (which is being displayed onthe user's computer system) is restricted for purposes of markup.

Initially, as shown at 1502, when a new document (e.g. web page) isdisplayed in the browser window of the client system, the browser agent(506, FIG. 5A) identifies the WEB PAGE associated with the new document,and passes the identified WEB PAGE to MAIN 520. In the present example(illustrated in FIGS. 13 and 14 A-D), it is assumed that the WEB PAGE ofthe document being displayed in the browser window 1300 of the clientsystem corresponds to “http://www.yahoo.com”. When MAIN receives the WEBPAGE information, it identifies the domain name (e.g. “www.yahoo.com”)from the WEB PAGE and performs a look up (1504) of the WEB PAGE, theidentified domain name and/or a portion of the identified domain name(e.g. “yahoo.com”) in the Site Hash Table (e.g. 1460, FIG. 14C). At1506, a determination is made as to whether there is a match of theidentified WEB PAGE in the Site Hash Table. If it is determined thatthere is no match, then it may be concluded that no site restrictionsapply to that particular WEB PAGE. Accordingly, a search analysisprocedure (such as that shown, for example, in FIGS. 16A-B of thedrawings) may then be implemented (1520).

In the present example, the identified domain name “www.yahoo.com”matches entry 1462 of the Site Hash Table shown in FIG. 14C.Accordingly, upon detecting a match in the Site Hash Table, the Site IDand Group ID (if present) corresponding to the matched domain name areidentified (1510) by referencing the appropriate information in the SiteHash Table 1460.

At 1514, a determination is made as to whether the identified Site IDcorresponds to a globally restricted site. According to a specificimplementation, a globally restricted site may be identified byreferring to information within the Group ID field associated with thatparticular site. A negative Group ID value may be used to indicate aglobal restriction for that particular web page or domain name. If it isdetermined that the current WEB PAGE corresponds to a globallyrestricted site, then additional procedures for performing contextmarkup on the current web page may be skipped (1522). If it isdetermined that the identified Site ID does not correspond to a globallyrestricted site, then the identified Site ID and its associated Group ID(if present) are passed (1516) to the search analysis procedure as inputparameters.

In the present example, Group ID value (i.e. 2) associated with Site ID5001 indicates that the site “www.yahoo.com” is not a globallyrestricted site. Accordingly, the Site ID=5001 and Group ID=2 parameterswill be passed to the search analysis procedure for further processing.Thereafter, a search analysis procedure such as that shown, for example,in FIGS. 16A-B of the drawings, may be initiated (1520).

FIGS. 16A and 16B illustrate flow diagrams relating to a Search AnalysisProcedure 1600 in accordance with a specific embodiment of the presentinvention. Although the flow diagrams of FIGS. 16A and 16B areillustrated on separate pages, they may be treated as one continuousflow which may be referred to as the Search Analysis Procedure. In aspecific embodiment, the Search Analysis Procedure may be implementedand managed by the Contextual Analysis Engine 522 of FIG. 5A. Asdescribed in greater detail below, one function of the Search AnalysisProcedure is to identify keywords and/or key phrases which exist withindocument context displayed on the client system such as, for example,the context displayed within browser frames 1304 of FIG. 13. Accordingto a specific embodiment, any property of a selected document may beused for performing search analysis. For example, the search engine cansearch the document text, WEB PAGE, title, Meta tags, etc.

As described previously, when the browser agent (506) detects a documentcomplete event for a selected frame (e.g. frame 1304 a of FIG. 13), thebrowser agent instantiates a frame agent for the identified frame. Theframe agent then processes the text within the identified frame, forexample, by extracting the text out of the HTML, breaking the text intoseparate lines using various tags (e.g. carriage returns, line breaks,links, etc.), trimming leading and trailing spaces between lines, etc.Once the text has been processed, the frame agent stores the processedtext in a file in the shared memory, and passes the name/location of theprocesses text file to the Contextual Analysis Engine for searchanalysis processing. Additionally, the frame agent may also pass othercharacteristics or parameters to the Contextual Analysis Engine such as,for example, a source tag, the location of the text portion within theframe, etc. In an alternate embodiment, such additional information maybe stored within the processed text file in the shared memory.

As shown at 1602, the Contextual Analysis Engine retrieves a first textportion of the processed browser frame context from the shared memoryfor search analysis processing. In the present example, it is assumedthat the text portion which has been retrieved corresponds to line 1301of browser frame 1304 a, which reads, “I used my credit card today”.

Additionally, according to a specific implementation, the SearchAnalysis Procedure may receive a variety of additional input parametersincluding, for example, a WEB PAGE of the current page or document,restricted Site IDs and or Group IDs (if any), etc.

The retrieved text portion is then parsed (1604) into separate words.According to one implementation, the parsing of the retrieved textportion may include, for example, determining the position, length, andtag type of selected words in the retrieved text portion. A first wordis then selected (1608). In the present example, the first word selectedis “I”. A determination is then made 1610 as to whether the selectedword is within the keyword table (e.g. the Keyword Hash Table 1420 ofFIG. 14A). In the present example, the selected word is not within theKeyword Hash Table.

According to a specific implementation, if the selected word is notfound in the Keyword Hash Table, then stemming procedures may beperformed and the search repeated. Such stemming procedures may include,for example, adding an “s” to the end of the selected word, removing an“s” from the end of the selected word (if present), removing alloccurrences of “-” from the selected word (if present), etc.

If it is determined that the selected word is not found in the KeywordHash Table, a next word from the retrieved text portion (e.g. “used”) isselected, and looked up in the Keyword Hash Table. In the presentexample, the word “used” is not found within the Keyword Hash Table.Accordingly, the next word “my” is selected and looked up in the KeywordHash Table. Since there is no matching entry for word “my” in theKeyword Hash Table, the next word “credit” is selected and looked up inthe Keyword Hash Table.

In the present example, an entry for the keyword “credit” is located inthe Keyword Hash Table. Accordingly, the display string recordsassociated with the identified keyword (e.g. “credit”) are identified(1612) using the information portion 1404 from the Keyword Hash Tablerecord 1420. In the present example, Key Phrase IDs 4000, 4002, 4005 areidentified from the “credit” keyword record 1420 of FIG. 14A. Thesedisplay string records (4000, 4002, 4005) correspond to Key Phase IDswhich may be found in the Title/Key Phrase Hash Table 1440 of FIG. 14B.Referring to FIG. 14B, it can be seen that each of the Key Phrase IDs4000, 4002, 4005 include the word “credit” in their respective displaystring text fields.

Once the appropriate display string records associated with theidentified keyword have been identified, a first display string record(e.g. display string record 1442 of FIG. 14B) is selected (1614), andthe Category ID (e.g. 9000) associated with the selected display stringrecord is identified (1616).

At 1618 a determination is made as to whether the identified Category ID(e.g. 9000) has any associated restrictions. According to a specificimplementation, this determination may be made by referencinginformation in the Category Hash Table of FIG. 14D. If there are norestrictions to the identified Category ID, then the selected displaystring record may be added (1620) to a Current Display String Table,such as that shown, for example in FIG. 17E of the drawings.

If, however, it is determined that the identified Category ID hasrestrictions associated with it, a determination may then be made (1622)as to whether the associated restrictions are positive or negativerestrictions. According to a specific implementation, the existenceand/or type of restrictions (e.g. positive restrictions or negativerestrictions) for a particular Category ID may be determined byreferencing the Restriction Indicator field of the entry in the CategoryHash Table matching that particular Category ID. In the present example,the identified Category ID is 9000, which corresponds to entry 1480 ofthe hash table illustrated in FIG. 14D. As shown in the example of FIG.14D, the restriction indicator field of category display string 9000 hasa value of (−). According to a specific embodiment, a negative value inthe restriction indicator field may signify a negative restriction, anda positive value in the restriction indicator field may signify apositive restriction. In the present example, a negative restriction isin effect for keywords associated with Category ID=9000 on web pagesassociated with restricted Site ID 5002 (which, according to the SiteHash Table of FIG. 14C, corresponds to the domain “www.cnn.com”).

Returning to FIG. 16A, if it is determined that the identified CategoryID is associated with a negative restriction, then a determination maybe made (1624) as to whether the domain name of the current WEB PAGEcorresponds to a Site ID specified in the restrictions field of theidentified Category ID record. If so, the selected display string recordis not added (1628) to the current display string record. If not, theselected display string record is added (1620) to the Current DisplayString Table.

In the present example, the domain name associated with the current WEBPAGE (displayed in browser widow 1300) is “www.yahoo.com”, which isassociated with Site ID 5001 in the Site Hash Table of FIG. 14C.However, as shown in FIG. 14D, Category ID 9000 has a negativerestriction associated with Site ID=5002, which corresponds to“www.cnn.com”. If the current web page displayed in browser window 1300were associated with the domain “www.cnn.com”, then the selected displaystring record (e.g. display string record 1442 of FIG. 14B) would not beadded (1628) to the Current Display String Table. However, since thedomain name of the current web page does not correspond to Site ID 5002,the selected display string record 1442 may be added (1620) to theCurrent Display String Table. Alternatively, if it is determined thatthe identified Category ID is associated with a positive restriction,then the selected display string record may be added to the CurrentDisplay String Table only if the domain name associated with the currentWEB PAGE corresponds to a Site ID specified in the restrictions field ofthe identified Category ID record. As explained in greater detail below,information from the Current Display String Table will be used inperforming match analysis of key phrases or keywords in the retrievedtext portion.

At 1629, a determination is made as to whether there are additionalidentified display string records (e.g. associated with the keyword“credit”) which are to be analyzed for restriction analysis. If, it isdetermined that there are additional identified display string recordsto be analyzed, then a next display string record is selected (1614) andanalyzed for restrictions in order to determine whether to add theselected display string record to the Current Display String Table. Onceit is determined that there are no additional display string records tobe analyzed, flow of the Search Analysis Procedure may continue atreference point B, which is illustrated in FIG. 16B of the drawings.

In the present example, each of the display strings 1442, 1444, 1446shown in FIG. 14B will be analyzed by the Search Analysis Procedure, andas a result of the analysis, will be added to the Current Display StringTable, thereby resulting in the Current Display String Table 1770 ofFIG. 17E. FIG. 17E shows an example of a Current Display String Table1770 in accordance with a specific embodiment of the present invention.

As shown in FIG. 16B, flow of the Search Analysis Procedure 1600continues from reference point B. At 1634, an Adjacent Word List isgenerated which includes j words immediately proceeding the selectedword (e.g. “credit”), and k words immediately following the selectedword. The values for j, k may vary depending upon design criteria andperformance. In a specific implementation, j=4 and k=5.

Thus, in the present example, an Adjacent Word List is generated whichincludes up to four words immediately proceeding the currently selectedword (e.g. “credit”), and five words immediately following the currentselected word. An example of an Adjacent Word List is shown in FIG. 17A.

FIG. 17A shows an example of an Adjacent Word List 1710 in accordancewith a specific embodiment of the present invention. In the embodimentof FIG. 17A, the Adjacent Word List 1710 may be implemented as a tableor other data structure which includes a plurality of fields. Forexample, a first field 1712 may include specific text relating to thewords adjacent to the currently selected word (e.g. “credit”), and asecond field 1714 may include information relating to start positions ofeach word in the Adjacent Word List. According to different embodiments,the currently selected word may be included in the Adjacent Word List,or may be omitted.

After the Adjacent Word List has been constructed for the currentlyselected word, a first display string record may be selected (1636) fromthe Current Display String Table. In the present example, as shown, forexample, in FIG. 17E, the Current Display String Table includes threedisplay string records, namely 1772, 1774, and 1776. Accordingly, afirst display string record (e.g. record 1772) is selected for analysis.

At 1638 the display string text and comparison parameters of theselected display string record are identified. In the present example,the display string text associated with record 1772 is “credit card”,and the comparison parameters specify an exact match, and a negativeword restriction which includes the word “check”.

At 1640 a determination is made as to whether an exact or fuzzy match isspecified for the display string text associated with the selecteddisplay string record. In the present example, display string record1772 specifies an exact match. Accordingly, the retrieved text line(e.g. “I used my credit card today”) is analyzed for an exact match ofthe display string text “credit card”. In a specific implementation, thematch analysis may be performed using the Adjacent Word List 1710.Additionally, according to a specific implementation, an exact match mayresult when it is determined that all words from the display string textare identified (1642) in the retrieved text portion, and that each ofthe identified words are in the correct order (1644).

According to a specific embodiment, a match helper may be used todetermine whether an exact or fuzzy match occurs. Examples of matchhelpers are shown in FIG. 17B-D of the drawings. For example, shown inFIG. 17B, all words for the display string text “credit card” have beenfound to be present and in the correct order. Therefore, it may beconcluded that an exact match has occurred.

If it has been determined that an exact match has occurred, adetermination may then be made (1646) as to whether there are anynegative words found in the Adjacent Word List within a predeterminedproximity parameter P to the currently selected word. In the specificimplementation, the value P may be set equal to any integer valuegreater than zero, such as, for example, P=2 words. If one or morespecified negative words are found within P words of the currentlyselected word, the exact match occurrence will be ignored. For example,as shown in FIG. 17E, display string record 1772 includes a negativeword “check”. Thus, assuming P=2, if the word “check” appears within twowords of the word “credit”, the exact match for “credit card” will beignored, and a next display string record will be selected from theCurrent Display String Table.

According to a specific implementation, match analysis for a selecteddisplay string may also be aborted if it is determined that a searchmaximum has been reached for selected keywords associated with thecurrent web page or document.

Assuming that an exact match has been found to occur, and that there areno negative words identified in proximity to the currently selectedword, the matched display string text may then be used to determine(1654) the appropriate text in the retrieved text portion which may bemarked up or highlighted in accordance with the technique of the presentinvention. During this determination, the start position where thehighlighting/markup should begin may be determined using, for example,the word position information included in the Adjacent Word List 1710.According to one implementation, if an exact match has been identified,the corresponding matched text in the retrieved text portion may beidentified for markup and/or highlighting. Thereafter, the relevantmarkup and display string information may be added (1656) to a ResultsData Structure, and merged with overlapping results. An example of aResults Data Structure is shown in FIG. 18 of the drawings.

At 1658, a determination is made as to whether there are additionaldisplay string records in the Current Display String Table to beanalyzed for match analysis. If so, a next display string record (e.g.display string record 1774 of FIG. 17E) is selected (1636) from theCurrent Display String Table, and a match analysis is then performedusing the display string text associated with the newly selected displaystring record.

In the present example, the next display string record 1774 selected foranalysis specifies a display string text of “credit check”, andspecifies an exact match type with no negative word restrictions. Sincethe Adjacent Word List 1710 does not include an exact match for “creditcheck” (as illustrated, for example, in the match helper diagram of FIG.17C), the Search Analysis Procedure will conclude that an exact matchfor “credit check” does not occur in the retrieved text portion.Accordingly, a next display string record (e.g. display string record1776 of FIG. 17E) may be selected from the Current Display String Tablefor display string text match analysis.

As shown in FIG. 17E, display string record 1776 specifies a displaystring text of “credit card APR”, specifies a fuzzy match type and amatch threshold value of 60%, meaning that at least 2 of the 3 words inthe display string text should preferably be found in the retrieved textportion. Record 1776 also specifies a negative word limitation whichincludes the word “used”.

As shown in the embodiment of FIG. 16B, during a fuzzy match analysis,the retrieved text portion may first be analyzed (1648) for negativewords which are within a predetermined proximity parameter P (e.g. P=2)to the currently selected word. In the present example, display stringrecord 1776 includes a negative word “used”. Since, in the currentexample, the word “used” is within 2 words of the currently selectedword “credit”, the Search Analysis Procedure may terminate the fuzzymatch analysis, and proceed directly to operation 1658.

If, however, it is determined that there are no negative words within Pwords of the currently selected word, the percentage of matched words(M) identified in the retrieved text portion may than be calculated ordetermined (1650). In the present example, as shown, for example, inFIG. 17D, 2 of the 3 display string words have been identified in theAdjacent Word List, thereby resulting in the calculation of M=66%. Adetermination may then be made (1652) as to whether the value M isgreater than or equal to the threshold match value associated with theselected display string entry (e.g. 60%).

If it is determined that the value M is greater than or equal to thematch threshold value, then the matched display string text may then beused to determine (1654) the appropriate text in the retrieved textportion which may be marked up or highlighted in accordance with thetechnique of the present invention. According to one implementation, ifa fuzzy match has been identified, an algorithm may be used to selectthe appropriate text in the retrieved text portion to be marked upand/or highlighted. According to a specific embodiment, thedetermination of the position and length of context to be marked up isdetermined, for example, by the position of the first word in the textportion that was found in the display string text, and the length may bedetermined by location of the last matched word. For example if the textportion in the document being analyzed was “My APR for credit is 0.9%”,and the display string is “Credit card APR”, then the, according to aspecific implementation, the markup text will be “APR for credit”.Thereafter, the relevant markup and display string information may beadded (1656) to a Results Data Structure, and merged with overlappingresults.

According to a specific embodiment, noise words such as, for example,“of”, “the”, “a”, “and”, etc. may be ignored when performing matchanalysis. Additionally, stemming may also be performed during the matchanalysis of a particular display string text in order to increase thechances of finding a match.

After each of the display string records in the Current Display StringTable have been analyzed, flow of the Search Analysis Procedure maycontinue at reference point A of FIG. 16A of the drawings.

Continuing at reference point A of FIG. 16A, at 1606 a determination ismade as to whether the retrieved text portion has finished beinganalyzed. If there are additional words in the retrieved text portionwhich have not yet been analyzed, a next word is selected (1608) andanalyzed as described above.

After all of the words in the retrieved text portion have been analyzed,a determination may then be made (1630) as to whether there areadditional text portions in the shared memory file to be analyzed. Ifso, according to one implementation, the Contextual Analysis Engine maysignal the frame agent to send a next text portion of the browser frameto be analyzed by the Search Analysis Procedure. In an alternateembodiment, the Contextual Analysis Engine may retrieve a next textportion of the browser frame context from the data file which has beenpreviously processed by the frame agent and stored in the shared memory.

After all of the relevant text portions of the browser frame contexthave been analyzed by the Search Analysis Procedure, notification of thecompletion of the Search Analysis Procedure may then be sent (1632) tothe frame agent. Thereafter, the frame agent may retrieve informationfrom the Results Data Structure information and use the retrievedinformation to perform a markup analysis and implementation inaccordance with a specific embodiment of the present invention.

FIG. 18 shows a block diagram of a Results Data Structure entry 1800 inaccordance with a specific embodiment of the present invention. In oneimplementation, the Results Data Structure may be managed by theContextual Analysis Engine 522 and populated during implementation ofthe Search Analysis Procedure 1600. As shown in the embodiment of FIG.18, each record or entry in the Results Data Structure may includeinformation relating to specific text which are candidates for contextmarkup in a selected document, in accordance with the technique of thepresent invention.

As shown in the embodiment of FIG. 18, each entry in the Results DataStructure may include information relating to a start position (1802) inthe selected document where context markup is to occur, a length (1804)of the region to be marked up/highlighted. Additionally each entry inthe Results Data Structure may also include display string record datastructures 1806 which include various information such as, for example,display string text, display string IDs, match properties, Category IDs,display string types, etc. For example, as shown in FIG. 18, entry 1800includes a data structure 1806 a which includes display string A recordinformation, a data structure 1806 c which includes alternate displaystring A record information, a data structure 1806 b which includesdisplay string B record information, etc. In a specific implementation,the display string A data structure and display string B data structuremay correspond to different links which will be displayed in a pop-uplayer (to the user) when the user selects or clicks on specific documentcontext which has been marked up in accordance with the technique in thepresent invention. Additionally, in one embodiment, the display string Arecord information may relate to a key phrase, and the alternate displaystring A record information may relate to a title associated with thatkey phrase. The alternate display string information may be derived fromthe information contained within an Alternate Display String field 914,described previously in FIG. 9A.

FIG. 19 shows a flow diagram of a Markup Procedure 1900 in accordancewith a specific embodiment of the present invention. According to aspecific implementation, the Markup Procedure may be implemented by aframe agent. In the embodiment of FIG. 19, the Markup Procedure may beused to selected appropriate document context for markup/highlighting,and for implementing markup of the selected document context.

Initially, as shown at 1902, the frame agent receives a search completesignal such as that provided, for example, by the Contextual AnalysisEngine. The frame agent then retrieves (1904) information from theResults Data Structure via its associated search pipe. Using theretrieved Results Data Structure information, markup decision analysismay then be performed (1906) using predetermined business rules in orderto determine appropriate markup text and/or pop-up layers to be markedup in the document context.

According to a specific embodiment, the predetermined business rules mayset forth specific criteria for the selection of specific documentcontext which is to be marked up in accordance with the technique of thepresent invention. For example, priority of markup selection (ofspecific document context) may be based upon the following priorityfactors: highest priority is given to text, followed by links, followedby repetitive display strings, followed by DIVs. Additionally, otherbusiness rules may be applied for the selection of a appropriatedocument context for markup such as, for example, the number of markupsper page may not exceed a predetermined “per page limit” value (e.g. nomore than 10 markups per page); markups on the same word may not berepeated more than a “per repeat limit” value (e.g. repeat words may notbe marked up more than twice); higher priority is given for markups oftext within bigger size frames over small size frames; etc.

Determination of the appropriate markups to be implemented in aparticular document/frame may also be based upon other criteria such as,for example, limits based upon each unique display string, limits foreach category (described, for example in field 806 of FIG. 8), etc.Additionally, the current markup mode (e.g. MARKUP HIGH PRIORITY mode orMARKUP ALL mode—relating to the user's click behavior) may also be usedto determine appropriate document context for markup.

After the appropriate document context has been selected for markup,markup of the selected document context may then be performed (1908) inorder to implement the desired text markups (e.g. marked up/highlightedtext and/or pop up layers). According to a specific implementation,markup of selected document context may be achieved by temporarilyannotating selected DOMs in the document that was retrieved to the userPersonal computer and was parsed by the User's browser.

An example of marked up document text implemented in accordance with aspecific embodiment of the present invention is shown in FIG. 20 of thedrawings. FIG. 20 shows a portion of a web page 2000 which has beenmarked up in accordance with the technique of the present invention. Anordinary link is identified at 2006, whereas context which has beenmarked up in accordance with the present invention is identified byportions 2002 and 2004 of FIG. 20. As shown at 2002, the word “mortgage”has been marked up to include highlighting and double underlining.Additionally, when the user passes the cursor over the marked up portion2002, additional information 2004 may be displayed to the user which wasnot initially parsed by the user's browser. In the example of FIG. 20,the word “mortgage” at 2002 has been converted from ordinary text into ahighlighted link which is visually different than conventional linksdisplayed by the browser application such as link 2006. Moreover, itwill be appreciated that the markup of text portions 2002 and 2004 havebeen automatically implemented at the client system based uponinformation provided by an advertiser and/or web site, and not by theend user.

FIG. 22 illustrate examples of different pop-up layers which may bedisplayed to the user in accordance with a specific embodiment of thepresent invention.

FIG. 21 shows an alternate embodiment of a pop-up layer 2202. In theexample of FIG. 21, it is assumed that the user has clicked on a keywordwhich was marked up or highlighted in accordance with the technique ofthe present invention. As shown in the example of FIG. 21, a pop-uplayer 2202 is displayed to the user, offering the user one or more links(e.g. 2204 a, 2204 b) to one or more destinations (e.g. associated withselected information provider or advertisers). Thus it will beappreciated that, using the technique of the present invention,advertisers are able to proactively communicate with (e.g. reach, serve,interact, sell, make offers, etc.) end users who are navigating outsidethe advertisers' web domain (e.g. web page, tool bar, email, etc.).

It will be appreciated that the technique of the present inventionenables businesses and advertisers to proactively interact with existingand potential on-line customers by marking up (e.g. underlining,highlighting, displaying additional text, graphics, and/or sound)selected keywords or phrases on any document, web page or web page whichis currently being displayed on the user's computer system. In this way,static HTML pages may be converted at the user's computer system intocustomized, dynamic information which provides the ability forbusinesses and advertisers to proactively deliver dynamic, targeted andcustomized service to the end users via additional information.

Additionally, the technique of the present invention may be used toenhance a business's proactive presence with existing and potentialon-line customers. In one implementation, proactive presence may bedefined as the volume of on-line contact points which may be used by abusiness to proactively reach, serve, sell and/or make offers tocustomers in a customized, personalized and targeted manner via theInternet or World Wide Web. The technique of the present inventionallows such businesses to enhance their proactive presence, therebyresulting in greater web-based revenues, market share and/or loweroverhead, and additionally improves the flow of services along the valuechain.

It will be appreciated that the technique of the present inventionoffers a variety of advantages over conventional on-line advertising andmarkup techniques. For example, the document markup technique of thepresent invention may be implemented on relatively long web pages usingrelatively long keyword lists without the end user experiencing systemperformance degradation. Additionally, the technique of the presentinvention facilitates understanding and interpretation of selected wordsin the context of their surrounding text through negative keywordanalysis. Further, the technique of the present invention provides novelprioritization algorithms, wherein preferred keywords are determined andselected for markup based upon a variety of statically and dynamicallydetermined criteria. The technique of the present invention also offerssupport for multiple browser environments such as, for example, InternetExplorer, AOL, Juno, Netscape, etc.

The technique of the present invention also offers excellentscalability. For example, since the software components of the presentinvention which are implemented on a client system form an integratedsystem with its own updateable data storage, the technique of thepresent invention is able to be scaled to server millions of users withrelatively minimal investments of server farms. Additionally, thetechnique of the present invention provides for a variety of limits andrestrictions to be implemented when performing document markup. Limitsmay be based on per word, per page, per category, etc. Restrictions onmarkup may also be based on the WEB PAGEs of a specific document,negative words, etc. Additionally, unlike conventional markuptechniques, the technique of the present invention offers a fuzzy searchmode wherein specific document context may be marked up despite lack ofan exact match of the search criteria.

It will be appreciated that the technique of the present invention alsooffers a variety of advantages from the perspective of the web site. Forexample, the web site maintainer is able to maintain full control overthe software components of the present invention which have beeninstalled on the client systems. Additionally, using data which iscollected from selected client systems, (e.g. user click behavior data),a campaign provider is able to calculate an estimate of the probableclicks which will be generated for selected keywords associated with agiven category. Moreover, the estimated click information may be used tofacilitate campaign sales to advertisers or other entities.Additionally, using the technique of the present invention, the campaignprovider is able to collect a variety of information from the clientsystems relating to keywords, categories, page views, marked up views,and other information relating to existing campaigns.

It will be appreciated that the technique of the present invention alsooffers a number of advantages to advertisers or other business entities.For example, a business entity is able to book, maintain, and bill forcampaigns that are based on keywords and categories of keywords. Thisunique method of implementing an online campaign is not provided byconventional online campaign technology. A business entity is also ableto manage keyword inventories. For example, advertising sales managersmay be provided with future click inventory information which may beused as a basis for projecting sales and/or for implementing futurecampaigns. Additionally, business entities are able to be provided withunique reporting information which heretofore has been unable to beprovided to business entities using conventional techniques. Forexample, business entities are provided with information relating to thenumber of page views displayed to selected users, keywords highlightedto selected users, clicks implemented by selected users, and informationrelating to the source of the document pages associated with each of theusers' clicks.

Other Embodiments

Generally, the various techniques of the present invention may beimplemented on software and/or hardware. For example, they can beimplemented in an operating system kernel, in a separate user process,in a library package bound into network applications, on a speciallyconstructed machine, or on a network interface card. In a specificembodiment of this invention, the technique of the present invention isimplemented in software such as an operating system or in an applicationrunning on an operating system.

A software or software/hardware hybrid implementation of the varioustechnique of this invention may be implemented on a general-purposeprogrammable machine selectively activated or reconfigured by a computerprogram stored in memory. Such programmable machine may be a networkdevice designed to handle network traffic, such as, for example, arouter or a switch. Such network devices may have multiple networkinterfaces including frame relay and ISDN interfaces, for example.Specific examples of such network devices include routers and switches.For example, the devices of this invention may be implemented onspecially configured routers or servers such as specially configuredrouter models 1600, 2500, 2600, 3600, 4500, 4700, 7200, 7500, and 12000available from Cisco Systems, Inc. of San Jose, Calif. A generalarchitecture for some of these machines will appear from the descriptiongiven below. In an alternative embodiment, the various technique of thisinvention may be implemented on a general-purpose network host machinesuch as a personal computer or workstation. Further, the invention maybe at least partially implemented on a card (e.g., an interface card)for a network device or a general-purpose computing device.

Referring now to FIG. 22, a network device 60 suitable for implementingthe various techniques of the present invention includes a mastercentral processing unit (CPU) 62, interfaces 68, and a bus 67 (e.g., aPCI bus). When acting under the control of appropriate software orfirmware, the CPU 62 may be responsible for implementing specificfunctions associated with the functions of a desired network device. Forexample, when configured as a network device, the CPU 62 may beresponsible for analyzing packets, encapsulating packets, forwardingpackets to appropriate network devices, performing keyword searching andmarkup analysis, etc. The CPU 62 preferably accomplishes all thesefunctions under the control of software including an operating system(e.g. Windows NT), and any appropriate applications software.

CPU 62 may include one or more processors 63 such as a processor fromthe Motorola family of microprocessors or the MIPS family ofmicroprocessors. In an alternative embodiment, processor 63 is speciallydesigned hardware for controlling the operations of network device 60.In a specific embodiment, a memory 61 (such as non-volatile RAM and/orROM) also forms part of CPU 62. However, there are many different waysin which memory could be coupled to the system. Memory block 61 may beused for a variety of purposes such as, for example, caching and/orstoring data, programming instructions, etc.

The interfaces 68 are typically provided as interface cards (sometimesreferred to as “line cards”). Generally, they control the sending andreceiving of data packets over the network and sometimes support otherperipherals used with the network device 60. Among the interfaces thatmay be provided are Ethernet interfaces, frame relay interfaces, cableinterfaces, DSL interfaces, token ring interfaces, and the like. Inaddition, various very high-speed interfaces may be provided such asfast Ethernet interfaces, Gigabit Ethernet interfaces, ATM interfaces,HSSI interfaces, POS interfaces, FDDI interfaces and the like.Generally, these interfaces may include ports appropriate forcommunication with the appropriate media. In some cases, they may alsoinclude an independent processor and, in some instances, volatile RAM.The independent processors may control such communications intensivetasks as packet switching, media control and management. By providingseparate processors for the communications intensive tasks, theseinterfaces allow the master microprocessor 62 to efficiently performrouting computations, network diagnostics, security functions, etc.

Although the system shown in FIG. 22 illustrates one specific networkdevice of the present invention, it is by no means the only networkdevice architecture on which the present invention can be implemented.For example, an architecture having a single processor that handlescommunications as well as routing computations, etc. is often used.Further, other types of interfaces and media could also be used with thenetwork device.

Regardless of network device's configuration, it may employ one or morememories or memory modules (such as, for example, memory block 65)configured to store data, program instructions for the general-purposenetwork operations and/or other information relating to thefunctionality of the various techniques described herein. The programinstructions may control the operation of an operating system and/or oneor more applications, for example. The memory or memories may also beconfigured to store data structures, display stings, and/or otherspecific non-program information described herein.

Because such information and program instructions may be employed toimplement the systems/methods described herein, the present inventionrelates to machine readable media that include program instructions,state information, etc. for performing various operations describedherein. Examples of machine-readable media include, but are not limitedto, magnetic media such as hard disks, floppy disks, and magnetic tape;optical media such as CD-ROM disks; magneto-optical media such asfloptical disks; and hardware devices that are specially configured tostore and perform program instructions, such as read-only memory devices(ROM) and random access memory (RAM). The invention may also be embodiedin a carrier wave travelling over an appropriate medium such asairwaves, optical lines, electric lines, etc. Examples of programinstructions include both machine code, such as produced by a compiler,and files containing higher level code that may be executed by thecomputer using an interpreter.

Although several preferred embodiments of this invention have beendescribed in detail herein with reference to the accompanying drawings,it is to be understood that the invention is not limited to theseprecise embodiments, and that various changes and modifications may beeffected therein by one skilled in the art without departing from thescope of spirit of the invention as defined in the appended claims.

1. A method for delivering advertising to end users of a computernetwork, the computer network including a first server system, andincluding a first client system associated with an end user, the methodcomprising: accessing campaign information which includes a firstplurality of keywords, the first plurality of keywords being provided byan entity other than the end user of the first client system;identifying a first document associated with a first uniform resourcelocator (URL), the first document including a first portion of originalcontent to be displayed on the first client system; selecting, using thecampaign information, specific original content of the first portion oforiginal content to be converted to a first hyperlink having a seconduniform resource locator (URL) associated therewith, the specificoriginal content including a first text string matching at least onekeyword from the campaign information; performing first markupoperations on a first portion of specific original content, wherein thefirst markup operations include converting the first portion of specificoriginal content into a first hyperlink to the second URL, the firsthyperlink including a first portion of marked up content; displaying thefirst hyperlink at the first client system, wherein the display of thefirst hyperlink includes display of the first portion of marked upcontent; detecting an occurrence of a first event relating to a locationof a cursor at the first client system being positioned over a portionof the displayed first hyperlink; and automatically displaying, inresponse to detection of the first event, a first overlay advertisingimpression at the first client system, the first overlay advertisingimpression including advertising information comprising a second portionof content which is different from the first portion of marked upcontent.
 2. The method of claim 1 wherein the first event relates to acursor click on a portion of the displayed first hyperlink.
 3. Themethod of claim 1 wherein the first event relates to a cursor hoveringover a portion of the displayed first hyperlink.
 4. The method of claim1: wherein the first portion of specific original content includes afirst string of text; wherein the first portion of marked up contentincludes the first string of text.
 5. The method of claim 1: wherein thefirst portion of specific original content includes a first string oftext, the first string of text being associated with a first originaldisplay format; wherein the first portion of marked up content includesthe first string of text which has been modified for display inaccordance with a second display format which has a different visualappearance than the first original display format.
 6. The method ofclaim 1: wherein the first portion of specific original content includesa first string of text, the first string of text being associated with afirst original display format; wherein the first portion of marked upcontent includes the first string of text which has been modified fordisplay in accordance with a second display format which has a differentvisual appearance than the first original display format; and whereinthe first string of text includes at least one identified keyword and atleast one word that does not correspond to an identified keyword.
 7. Themethod of claim 1 wherein the displayed advertising information includesat least a portion of additional content which is not included in thefirst portion of marked up content.
 8. The method of claim 1 wherein theadvertising information displayed in the first overlay advertisingimpression includes a second hyperlink to a third URL different from thefirst URL.
 9. The method of claim 1: wherein the second portion ofdisplayed content includes additional descriptive information relatingto the displayed first hyperlink; wherein the second portion ofdisplayed content is not configured as a link to a URL; wherein thecampaign information includes a first text string provided by theentity; and wherein the second portion of displayed content includes thefirst text string.
 10. The method of claim 1: wherein the second portionof displayed content is configured as a link to a second URL; andwherein the advertising information displayed in the first overlayadvertising impression further includes additional advertising contentdifferent from the first portion of marked up content and different fromthe second portion of displayed content.
 11. The method of claim 1further comprising: identifying, using information associated with thefirst information distribution campaign, advertising content which iscontextually related to the first portion of marked up content; anddynamically generating the advertising information displayed in thefirst overlay advertising impression to include at least a portion ofthe identified advertising content.
 12. The method of claim 1 furthercomprising: identifying, using information associated with the firstinformation distribution campaign, advertising content which iscontextually related to the first portion of marked up content;dynamically generating the advertising information displayed in thefirst overlay advertising impression to include at least a portion ofthe identified advertising content; wherein the campaign informationincludes a first text string provided by the entity; and wherein thesecond portion of displayed content includes the first text string. 13.The method of claim 1: wherein the specific original content includes atleast one original link including a first original link to a specificURL, the first original link having associated therewith a first set oforiginal display format characteristics for use in causing a displayedappearance of the first original link to be in accordance with a firstdisplay format; and wherein the first hyperlink has associated therewitha second set of original display format characteristics for use incausing a displayed appearance of the first hyperlink to be inaccordance with a second display format different from the first displayformat.
 14. The method of claim 1, wherein the specific original contentincludes at least one original link including a first original link to aspecific URL, the method further comprising: displaying the firstoriginal link at the first client system in accordance with a firstdisplay format; and displaying the first hyperlink at the first clientsystem in accordance with a second display format different from thefirst display format; wherein a visual appearance of the displayedformatting of the first hyperlink is different from a visual appearanceof the displayed formatting of the first original link.
 15. The methodof claim 1 wherein the advertising information displayed in the firstoverlay advertising impression includes dynamically served content. 16.The method of claim 1 wherein the advertising information displayed inthe first overlay advertising impression includes dynamically servedinformation contextually related to the first portion of marked upcontent.
 17. The method of claim 1 further comprising: generatingdynamically served advertising information to be included in the firstoverlay advertising impression.
 18. The method of claim 1 furthercomprising: generating dynamically served advertising information fordisplay in the first overlay advertising impression; and displaying atleast a portion of the dynamically served advertising information in thedisplay of the first overlay advertising impression.
 19. A system fordelivering advertising to end users of a computer network, the computernetwork including at least one first client system associated with anend user, the system comprising: at least one processor; at least oneinterface operable to provide a communication link to at least onenetwork device of the computer network; and memory; the system beingoperable to: access campaign information which includes a firstplurality of keywords, the first plurality of keywords being provided byan entity other than the end user of the first client system; identify afirst document associated with a first uniform resource locator (URL),the first document including a first portion of original content fordisplay on the first client system; select, using the campaigninformation, specific original content of the first portion of originalcontent to be converted to a first hyperlink having a second uniformresource locator (URL) associated therewith, the specific originalcontent including a first text string matching at least one keyword fromthe campaign information; perform first markup operations on a firstportion of specific original content, wherein the first markupoperations include converting the first portion of specific originalcontent into a first hyperlink to the second URL, the first hyperlinkincluding a first portion of marked up content; display the firsthyperlink at the first client system, wherein the display of the firsthyperlink includes display of the first portion of marked up content;detect an occurrence of a first event relating to a location of a cursorat the first client system being positioned over a portion of thedisplayed first hyperlink; and automatically display, in response todetection of the first event, a first overlay advertising impression atthe first client system, the first overlay advertising impressionincluding advertising information comprising a second portion of contentwhich is different from the first portion of marked up content.
 20. Asystem for delivering advertising to end users of a computer network,the computer network including a first client system associated with anend user, the system comprising: at least one processor; memory; meansfor accessing campaign information which includes a first plurality ofkeywords, the first plurality of keywords being provided by an entityother than the end user of the first client system; means foridentifying a first document associated with a first uniform resourcelocator (URL), the first document including a first portion of originalcontent to be displayed on the first client system; means for selecting,using the campaign information, specific original content of the firstportion of original content to be converted to a first hyperlink havinga second uniform resource locator (URL) associated therewith, thespecific original content including a first text string matching atleast one keyword from the campaign information; means for performingfirst markup operations on a first portion of specific original content,wherein the first markup operations include converting the first portionof specific original content into a first hyperlink to the second URL,the first hyperlink including a first portion of marked up content;means for displaying the first hyperlink at the first client system,wherein the display of the first hyperlink includes display of the firstportion of marked up content; means for detecting an occurrence of afirst event relating to a location of a cursor at the first clientsystem being positioned over a portion of the displayed first hyperlink;and means for automatically displaying, in response to detection of thefirst event, a first overlay advertising impression at the first clientsystem, the first overlay advertising impression including advertisinginformation comprising a second portion of content which is differentfrom the first portion of marked up content; wherein the specificoriginal content includes at least one original link including a firstoriginal link to a specific URL, the first original link havingassociated therewith a first set of original display formatcharacteristics for use in causing a displayed appearance of the firstoriginal link to be in accordance with a first display format; whereinthe first hyperlink has associated therewith a second set of originaldisplay format characteristics for use in causing a displayed appearanceof the first hyperlink to be in accordance with a second display formatdifferent from the first display format.